一,简单的二分查找算法
二分查找(Binary Search)算法是一种针对有序且不含重复数据集合的查找算法,时间复杂度为 $O(logn)$ ,二分查找虽然性能比较优秀,但应用场景也比较有限。
因为底层依赖于数组这种结构,所以不适合数据量大的情况。再次,对于较小规模的数据查找,二分查找的优势并不明显,一般直接使用顺序遍历就可以了。二分查找更适合处理静态数据,也就是没有频繁的数据插入、删除操作。
如果数据使用链表存储,二分查找的时间复杂就会变得很高,变成了 $O(n)$。
简单的二分查找算法的 C++ 代码如下:
// 非递归实现
int BinarySearch(int a[], int n, int value){
int low = 0, high = n-1;
int mid = (low+high)/2;
while( low <= high){
// mid = low+(high-low)/2; mid = low+((high-low)>>1)
mid = (low+high)/2;
if( a[mid] == value ){
return mi

本文详细介绍了二分查找算法的基本原理及其四种常见的变形问题:查找第一个等于给定值的元素、查找最后一个等于给定值的元素、查找第一个大于等于给定值的元素和查找最后一个小于等于给定值的元素。对于每个变形,文章提供了相应的解题思路和代码实现。二分查找算法适用于有序且不含重复数据的集合,时间复杂度为 $O(logn)$,但不适用于链表存储的数据结构。
订阅专栏 解锁全文
2695

被折叠的 条评论
为什么被折叠?



