【算法打卡】Day1-二分查找(Java)
二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。当一个顺序表的数据根据某种方式有序排列的时候,就可以使用二分法查找。二分查找又称折半查找,仅适用于有序的顺序表。
基本思路
1.首先将预期结果与顺序表中间位置的元素或对象属性比较,若相等,则查找成功,返回结果; 2.若不等,则所查结果只会在中间元素或对象之外的前半部分或者后半部分。 3.然后在缩小的范围内继续进行上述两个步骤,知道找到或者确定表中没有对应结果位置。
伪代码
int binarySearch(SeqList L,ElemType key){
//在有序表L中查找关键字为key的元素,若存在则返回其所在位置,否则返回-1
int low=0,high=L.length-1;
int mid;
while(low<=high){
mid=(low+high)/2;//取中间位置
if(L.index[mid]==key){
return mid;//查找成功则返回所在位置
}else if(L.index[mid]>key){
high = mid-1;//从前半部分继续找
}else{
low=mid+1;//从后半部分继续找
}
}
return -1;
}
时间复杂度
O(logn)
|