二分查找是一种查询效率非常高的查找算法。又称折半查找。
起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。
本文主要介绍不使用递归实现二分查找(while循环)
查找原理
有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。
二分查找优缺点
优点是比较次数少,查找速度快,平均性能好;
其缺点是要求待查表为有序表,且插入删除困难。
因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
使用条件:查找序列是顺序结构,有序。
java代码实现
public static int method(int []a,int target) {
int low=0;
int high=a.length-1;
while(low<=high) {
int mid=(low+high)/2;
if(a[mid]>=target)
high=mid-1;
else
low=mid+1;
}
return low;
}