转载注明!https://blog.csdn.net/qq_31842777/article/details/90339243
北京下了雨,郁郁清爽,此时此刻,一个人孤坐在教室。
一、二分查找的定义、适用及优点
1. 定义
二分查找又称折半查找。基本思想为先确定待查对象的范围,然后逐步缩小范围直到找到或找不到该对象为之。具体地讲,就是比较该区间的中间值,若大于中间值,就在右半区间继续查找,否则就在左半区间继续查找,如此循环,直到找到或找不到为之。
2. 适用及优点
优点:比较次数少,查找速度快;
缺点:要求待查表为有序表(排序本身很费时,高效率的算法也得O(nlog n));
适用:只适用于顺序存储结构,且适用于插入删除少且查找频繁的有序列表。
对于一个大小为N的数组,二分查找用了log N步;二分查找的时间复杂度为O(log n);
二、二分查找的具体实现
下面展示二分查找的代码实现:
// 二分查找的实现
public class BinarySearch{
public static int get(int target, int[] array){
//判断数组是否为空
if(array==null||array.length==0){
return -1;
}
//初始化
int low=0;
int high=array.length-1;
int mid=0;
while(low<=high){
mid=(high+low)/2;
if(target==array[mid]){
return mid;
}
else if(target>array[high]||target<array[low]){
return -1;
}
else{
if(target>array[mid]){
low=mid+1;
}
if(target<array[mid]){
high=mid-1;
}
}
}
return -1;
}
//测试
public static void main(String args[]){
int[] array=new int[]{1,2,4,6,7,10,15,19};
System.out.println(BinarySearch.get(15,array));
}
}