package com.ecut.javabase;
public class JavaDemo07 {
//二分查找的java实现方法
public static void main(String[] args) {
int b = 4;
int a[] = {1,2,3,4,5,6,7,8,9};
int left = 0;
int right = a.length - 1;
while(left < right) {
for(int i = 0;i<a.length;i++)
{
int middle = (left + right)/2;
if(middle < b) {
left = middle+1;
}
else if(middle > b){
right = middle-1;
}
else{
System.out.println("查找成功,在数组的第"+middle+"位");
return;
}
}
System.out.println("查找失败");
}
}
}
个人理解是:先找出头和尾,然后求出他们之间的中间值,然后中间值和要查找的值进行对比,如果中间值比查找值大,那么查找的范围就可以排除中间值右边的区域。反过来就排除中间值左边的区域、一遍一遍进行循环,知道找到中间值和两边的值相等的那个数,如果没有找到,就是说明要查找的值并不在该数组里。
浙公网安备 33010602011771号