C++二分查找法(Binary Search)小科普

基本概念

        二分查找法(binary search)是一种用于在有序数组或范围中高效查找目标值的算法。

其时间复杂度为(O(log n)),相较于线性查找(O(n))更加高效,尤其适用于大规模数据。

具体步骤:

        二分查找法的基本思想:二分查找通过不断的将搜索范围折半,逐步缩小目标值所在的区间。具体步骤如下:

1.初始范围:

设定一个查找范围,包含数组的起点和终点。即:定义两个指针l和r,分别指向范围的左边界和右边界。

2.计算中点:

取查找范围的中点mid,通过公式计算:mid=|(l+r)/2|。(为了避免整数溢出,可以用位运算:mid=l+(r-l)/2,或直接写成(l+r)>>1。

3.比较与缩小范围:

                如果目标值=中点值,则查找成功,返回该值。

                如果目标值<中点值,则缩小范围到左半部分,即将r更新为mid-1。

                如果目标值>中点值,则缩小范围到右半部分,即将l更新为mid+1。

4.重复步骤 2 和 3

直到l>r,此时表示查找范围被缩小到0,查找结束。

程序语言

二分查找法(binary search)

1.确定搜索范围及排序数组:

        先使用sort给数组排序。

        接下来:

        最小的可能和为A[0]+B[0]。

        最大的可能和为A[N-1]+B[N-1]。

2.二分查找

        在这个范围内进行二分查找,设定中间值mid。

        计算有多少个A[i]+B[j]≤mid。

如果这个数量≥k,则说明第k小的和≤mid,将上界调整为mid。

        否则,将下界调整为mid+1.

3.计数方法

        如果A和B都是非降序的,可以使用双指针的方法高效的计算有多少个和≤mid。

        

你可能感兴趣的:(C++,二分,编程,c++,开发语言,二分)