折半查找:
- 设定查找范围的下限low,上限high,由此确定查找范围的中间位置mid;
- 中间位置的值等于待查的值,查找成功
- 中间位置的值小于待查的值,low=mid+1;中间位置的值大于待查的值,high=mid-1
- 直到low>high,查找失败。
package com.experiment2;
import java.util.*;
public class Main {
public static void main(String[] args){
int a[] = {12,34,9,-23,45,6,90,123,19,45,34};
Arrays.sort(a);
Scanner in = new Scanner(System.in);
int n = in.nextInt();
boolean existed = biSearch(a, 0 , a.length, n);
if (existed){
System.out.println("存在!");
}else{
System.out.println("不存在!");
}
}
public static boolean biSearch(int[] arr, int low, int high, int num){
while ( low <= high){
int mid = (low + high) / 2;
if (arr[mid] == num){
return true;
}else if (num < arr[mid]){
high = mid - 1;
biSearch(arr, low, high, num);
}else if (num > arr[mid]){
low = mid + 1;
biSearch(arr, low, high, num);
}
}
return false;
}
}