public class BinarySearch {
/**
* 二分查找法\折半查找法:
* 折半折的是下标
* 前提条件:数组必须有序
*/
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
int num = 8;
int left = 0;
int right = arr.length-1;
int index = -1;
while(true) {
int middle = (left+right)/2;
if(arr[middle]< num) {
// 可以找到最右侧的值
// 因为int相除结果为int
// 例子(7+8)/2=7永远也无法得到8
// 所以自增
left = middle + 1;
}else if(arr[middle] > num) {
// 在查到不到num的时候
// 会使得left>right
right = middle -1;
}else {
// 结束
index = middle;
break;
}
if(left > right) {
index = -1;
break;
}
}
System.out.println(index);
}
}
二分查找法\折半查找法
最新推荐文章于 2022-12-10 20:48:47 发布