算法二分查找Java参照例子
Notice:以最简要的方式分享个人理解
1.简要说明
在有序的数据集中,每回查找后过滤去除目标集合中的半数元素,最终定位目标值。
示例:输入整数4 以下表{目标数据集}为查找对象,执行二分查找 定位目标值的下标并输出其值。
目标数据集: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
数组下标: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2.示例代码
Test01.java
import java.io.*;
public class Test01{
public static void main(String[] args){
int[] intarry = {1,2,3,4,5,6,7,8};
try{
BufferedReader bfreader = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(bfreader.readLine());
int arryLeng = intarry.length;
int left =0 ;
int right = arryLeng-1;
int loopcount = 0;
while(left <= right){
loopcount ++;
int index = (left+right)/2;
if(intarry[index] < x){
left = index+1;
}else if(intarry[index] > x){
right = index-1;
}else if(intarry[index] == x){
System.out.println("loops:" + loopcount + " catch value:"+x);
break;
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
3.演示结果
代码如下(示例):
$ java Test01
4
loops:1 catch value:4
supplement:用时间复杂度衡量比较结果,顺序查找为O(n),二分查找为O(log n) ,大O表示法让你能够比较操作数,它指出了算法运行时间的增速。
推荐参考书《算法图解》