查找算法之二分查找
  PjuqN0S4qpGM 2023年11月02日 48 0


如果要查找的数据已经事先排序好了,则可以使用二分查找法来进行查找。

1、算法描述

二分查找法是将数据分割成两等份,再比较键值与中间值的大小,如果键值小于中间值,可确定要查找的数据在前半段,如果键值大于中间值,可确定要查找的数据在后半段。

2、算法图解

查找算法之二分查找_键值

3、算法demo

#include <bits/stdc++.h>
using namespace std;

bool binarySearch(vector<int> nums, int key)
{
    int l = 0;
    int h = nums.size() - 1;
    while(l <= h)
    {
        int m = l + (h - l)/2;
        if (nums[m] == key)
            return true;
        else if (nums[m] > key)
            h = m - 1;
        else
            l = m + 1;
    }
}

int main(int argc, char const *argv[])
{
    vector<int> vec = {1, 3, 4, 6, 7};
    cout << binarySearch(vec, 4);
    return 0;
}

4、算法总结

在数据已经有序的情况下,二分查找的速度非常快,是O(logn),二分查找的思想在很多地方都有应用。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
PjuqN0S4qpGM