二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,
最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).
但二分查找算法则更优,因为其查找时间为O(lgn)。
举例说明:例如list={1,2,3,4,5,6,7,8,9},如果要查找元素6,步骤如下:
1.比较6和list中间位置的大小,6>5,则往5的右半部{6,7,8,9}查找
2.比较6和{6,7,8,9}中间位置7的大小,7>6,则在7的左边查找
3. 7的左边为6,6=6,则找到了
具体的代码如下:
public class Erfen {
/**
* @param args
* @return
* 非递归实现
*/
public static int Erfen(int[] list,int low,int high,int num){
while(low<=high){
int middle=(high-low)/2+low;
if (list[middle]==num) {
return middle;
}
else if (list[middle]<num) {
low=middle+1;
}
else{
high=middle-1;
}
}
return -1;
}
public static void main(String[] args) {
int[] list={1,3,4,6,7,9,12,14,45};
int s=Erfen(list,0,list.length-1,121);
System.out.print(s);
}
}