>  기사  >  Java  >  Java는 이진 검색을 구현합니다.

Java는 이진 검색을 구현합니다.

王林
王林앞으로
2019-12-30 11:50:392303검색

Java는 이진 검색을 구현합니다.

이진 검색이란 무엇입니까?

생체 인식 검색도 지정된 요소를 순서대로 찾고, 최소 인덱스(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제