在数组中使用二分法查找

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: 小 | 中 | 大 | 超大  

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;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有