查找算法之二分查找

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

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

猜你喜欢

转载自blog.csdn.net/daaikuaichuan/article/details/80657265