主题:二分查找 前提:数组必须是有序的数组(通过Arrays.sort(要排序的数组))
方法一:二分查找常规方法
mid为left和right的中间值。当要查找的数在mid左边,right值为mid-1;当要查找的数在mid右边时,left的值为mid+1。若找的值存在则返回数组下标。若要找的值不存在,则返回-1.
代码:
public static int binarySearch(int[]array,int key){
int left=0,right=array.length-1;
while(left<=right){
int mid=(right+left)/2;
if(array[mid]<key){
left=mid+1;
}
else if(array[mid]>key){
right=mid-1;
}
else if(array[mid]==key){
return mid;
}
}
return -1;/*如果没有找到返回 -1*/
}
public static void main(String[] args) {
int[] array={11,48,98,99,3,9};
Arrays.sort(array);/*系统自带数组排序*/
int ret=binarySearch(array,9);
System.out.println(ret);
}
方法二:使用Arrays.binarySearch(int[] a, int key)
int[] a:需要要查找的数组
int key:需要找的数
代码:
public static void main(String[] args) {
int[] array={11,48,98,99,3,9};
Arrays.sort(array);/*系统自带数组排序*/
int ret=Arrays.binarySearch(array,9);
System.out.println(ret);
}