dataframe 查找特定值_数据结构与算法二分查找

本文介绍了二分查找算法,包括其平均时间复杂度为O(logn)。通过实例详细解释了如何在有序递增数组中查找特定元素、第一个等于特定元素的位置、最后一个等于特定元素的位置、第一个大于特定元素的位置以及最后一个小于特定元素的位置。理解二分查找的核心思想对于解决相关问题至关重要。
摘要由CSDN通过智能技术生成

什么是二分查找

    二分查找又称作折半搜索算法,是一种在有序数组中查找某一个特定元素的搜索算法;二分查找的平局时间复杂度为O(logn)。


根据实际问题来讲解二分查找

问题1:查找有序递增数组中的特定元素

  1. 查找有序递增数组中的某一个数;

  2. 从有序递增数组的中间开始,如果中间的数值刚好是要查找的数,搜索就结束;

  3.  否则,将中间的数值跟搜索的数作对比,如果中间的数比搜索的数要大,那下一次查找的范围在左边,如果中间的数比搜索的数要小,那下一次查找的范围在右边;

  4. 进入下一个范围后,再次进行上面的2,3步骤操作,直到搜索到相等的数值或者数组为空。

列如:有序递增数组a=[1,4,4,5,6],特定元素是5。L为最左边位置,R为最右边位置,M为[L,R]区间内的中间位置。

第一次比较为:L=0,R=4,M=2,a[M]比特定值5小,区间往右边搜索,所以L=M+1,最左边的位置往中间值下一位;L=3,R=4,M=3,a[M]与特定值5相等,结束搜索。

如下图所示:

5699e9a559ab256a706546077155bf08.png

上述是最基础的二分查找问题,核心思想。

//查找有序递增数组中的特定元素int BinarySearch(int *pArrayNum, int nCount, int nValue) {
        int nLeft = 0;    int nRight =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值