欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

查找算法之二分查找

程序员文章站 2022-06-02 11:50:24
...

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

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),二分查找的思想在很多地方都有应用。

相关标签: 二分查找