算法经典|二分查找详解
算法经典|二分查找详解
查询算法是非常重要的算法之一,即便不从事算法相关岗位,在CRUD的开发岗中,查询也是常见的业务操作。通常我们是从头到尾查询一个顺序表(数组、链表等)得到我们的结果,这种方式的时间复杂度为O(n),但针对一些特殊的数据,可以采取更加高效的方式查询。
二分查找
1.首先将预期结果与顺序表中间位置的元素或对象属性比较,若相等,则查找成功,返回结果;2.若不等,则所查结果只会在中间元素或对象之外的前半部分或者后半部分。3.然后在缩小的范围内继续进行上述两个步骤,知道找到或者确定表中没有对应结果位置。
int binarySearch(SeqList L,ElemType key){//在有序表L中查找关键字为key的元素,若存在则返回其所在位置,否则返回-1int 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;}
关于mid的确定
复杂度分析
适用条件
►
►
►
长按二维码
