黑马程序员技术交流社区
标题:
小话数组的二分查找
[打印本页]
作者:
yuhongzhen
时间:
2015-11-25 19:38
标题:
小话数组的二分查找
二分查找比较好理解,就是将排好序的数组一分为二,将指定的数值与数组中间值比较,根据比较的结果,将索引值进行移动,再与移动后的索引值中间值进行比较,直到找到该数值,或发现不存在为止。
public static int getNum(int[] arr, int num) {
int min = 0;//最小索引值
int max = arr.length;//最大索引值
int mid = (min + max) / 2;//中间索引值
//将指定的值与数组的中间索引值的元素比较
while (true) {
if (num < arr[mid]) {
max = mid = 1;//小于中间索引值,最大索引值移动至中间索引值-1
} else if (num > arr[mid]) {
min = mid + 1;//大于中间索引值,最小索引值移动至中间索引值+1
} else {
return mid;//返回找到的索引值
}
mid = (min + max) / 2;//比较一次后重新计算中间索引值
if(max<min){
return -1;//如果不存在该数值,返回-1
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2