이진 검색이란 무엇입니까?
생체 인식 검색도 지정된 요소를 순서대로 찾고, 최소 인덱스(low)와 최대 인덱스(height-1)를 설정하고 중간 값 mid(( low+height-1)/2), 이러한 종류의 검색에서는 중간 값이 지정된 요소보다 작으면 low=mid+1로 하고, 중간 값이 지정된 요소보다 크면 height=mid-로 둡니다. 1;
코드 구현: (무료 비디오 튜토리얼 공유: java 비디오 튜토리얼)
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int arr[] = { 2, 5, 6, 8, 9, 4, 7 }; Arrays.sort(arr); int deix(索引) = getxiabiao(arr, 7); } public static int getxiabiao(int[] arr, int key) { int heigh = arr.length-1; int low = 0; int mid = 0; while (low <= heigh) { mid = low + (heigh - low)/2; if (arr[mid] == key) { return mid; } else if (arr[mid] < key) { low = mid + 1; } else if (arr[mid] > key) { heigh = mid - 1; } } return -1; } }
중간 값을 설정하는 방법에는 두 가지가 있습니다.
알고리즘 1: mid = (낮음 + 높음) / 2
알고리즘 2 : mid = low + (high – low)/2
얼핏 보면 알고리즘 1은 추출하고 나면 알고리즘 2도 알고리즘 1과 다르지 않습니다. 그러나 실제로는 차이가 존재합니다.
알고리즘 1의 접근 방식은 극단적인 경우 (낮음 + 높음)의 오버플로가 발생할 위험이 있으며, 이로 인해 잘못된 mid 결과가 발생하고 프로그램 오류가 발생할 수 있습니다. 그러나 알고리즘 2는 계산된 mid가 반드시 일치함을 보장할 수 있습니다. low보다 크고 high보다 작으면 오버플로 문제가 없습니다.
추천 관련 기사 및 튜토리얼: Java 입문 튜토리얼
위 내용은 Java는 이진 검색을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!