1.背景
以一个题目为例,一个整数x是一组按大小顺序排列好的数列中的一个数,我们要找到x在数列中的索引位置。
比如按从小到大排列的数列:
-3,-2,0,4,5,7,12,64
我们要找到数字7的位置,如果是线性查找,时间复杂度是O(n),如果用折半查找的话,时间复杂度是O(log(n)),因为每次折半,计算量少一半,所以取对数。
2.代码
package Algorithm_analysis;
public class Bisearch {
static int[] array={-3,-2,0,4,5,7,12,64};
public static void main(String args[]){
int left=0;
int right=array.length;
int center=0;
int k=7;
while(left<=right){
center=(right+left)/2;
if ((array[center]-k)==0){
System.out.print(center);
break;
}
else{
if((array[center]-k)>0){
right=center;
}
else{
left=center;
}
}
}
}
}
//输出结果7
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/