标签:ase out lse system 二分法查找 等于 value int while
int[] arr ={3,12,24,36,55,68,75,88};
int low = 0;
int high = arr.length - 1;
int mid = -1; while(low <= high) { mid = (low + high) / 2; if (arr[mid] < value){
low = mid + 1;
}else if (arr[mid] > value){
high = mid - 1;
}else{
break;
} } if (low <= high) {
System.out.println("可以找到:index = " + mid + "。"); } else {
System.out.println("无法找到!");
}
执行流程:
1)开始令low=0(指向3),high=7(指向88),则mid=3(指向36)。因为k<mid,故应在前半段中查找。
2)令新的high=mid-1=2(指向24),而low=0(指向3)不变,则新的mid=1(指向12)。此时k>mid,故确定应在后半段中查找。
3)令新的low=mid+1=2(指向24),而high=2(指向24)不变,则新的mid=2,此时k=arr[mid],查找成功。
如果要查找的数不是数列中的数,例如k=25,当第四次判断时,k>mid[2],在后边半段查找,令low=mid+1,即low=3(指向36),high=2(指向24)出现low>high的情况,表示查找不成功。
标签:ase out lse system 二分法查找 等于 value int while
原文地址:https://www.cnblogs.com/luke-liuqi/p/9308766.html