二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
1.在一个有序的数组里(一般是从小到大排序)查找所在值的位置,并返回其所在的下标;如果数组中没有此数显示-1。
2.一组混乱排序的数组可以通过Arrays.toString(数组名)来排序。
3.当首尾相加超出int范围时 可以转化等式middle=(begin+end)/2为 middle= begin+(end-begin)/2;
实例:
1 public static void main(String[] args) { 2 int[]arr=new int []{1,2,3,4,5,6}; 3 Scanner scanner=new Scanner(System.in); 4 System.out.println("输入要查找的数:"); 5 int key=scanner.nextInt(); 6 int a= binarySearch(arr,key); 7 System.out.println(a); 8 } 9 public static int binarySearch(int[]arr,int key ){ 10 int end=arr.length-1;int begin=0; 11 while (begin<=end){ 12 int middle=(begin+end)/2; // int middle=begin+(end-begin)/2; 防止首尾相加越界
13 if(key==arr[middle]){
14 return middle;
15 }else if(key<arr[middle]){
16 end=middle-1;
17 }else {
18 begin=middle+1;
19 }
20 }
21 return -1;
22 }