packagecom.db2;importjava.util.Arrays;/*** 二分法查找
*
*@authordenny 使用二分法查找的前提数组已经排过序
**/publicclassDemo4 {publicstaticvoidmain(String[] args) {int[] arr = { 3, 1, 8, 2, 9, 100, 33, 22, 11, 18, 14, 17, 15, 3};//使用Arrays.sort()排序Arrays.sort(arr);
System.out.PRintln(Arrays.toString(arr));//返回结果//int index = brinarySearch(arr, 99);intindex = brinarySearch_2(arr, 11);
System.out.println("index=" +index);
}/** 二分法查找一返回下标如果是-1就说明没有*/publicstaticint
brinarySearch(int[] arr,intkey) {//数组和要查找的数intmin = 0;//最小的下标intmax = arr.length - 1;//最大的下标intmid = (min + max) / 2;//中间的下标while(arr[mid] !=key) {if(key > arr[mid]) {//比中间数还在min = mid + 1;//最小的下标=中间下标加一}elseif(key < arr[mid]) {//比中间数还小max = mid - 1;//最大的下标=中间下标-1}if(max<min){return-1;
}
mid=(min+max)/2;//再次计算中间下标}returnmid;
}/** 二分法查找一返回下标如果是-1就说明没有*/publicstaticint
brinarySearch_2(int[] arr,intkey) {//数组和要查找的数intmin = 0;//最小的下标intmax = arr.length - 1;//最大的下标intmid = (min + max) / 2;//中间的下标while(min<=max){if(key>arr[mid]){
min=mid+1;
}elseif(key<arr[mid]){
max=mid-1;
}else{returnmid;
}
mid=(min+max)/2;
}//没找到return-1;
}
}