码迷,mamicode.com
首页 > 其他好文 > 详细

binary search模板总结

时间:2018-04-08 16:02:52      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:source   查找   查找算法   tar   down   位置   常用   return   输出   

二分查找算法是最常用的一种高效算法,所以本文将常见的情形做一个总结,得到一个二分查找的模板,方便应对各种二分查找中的问题。

当前有一个有序的数列:

1, 5, 9   【每个数字都是唯一的】
1, 2, 2, 9  【存在重复的数字】

模板

该模板可以在数列中查找一个数target,如果target在数列中存在,输出target第一次出现位置下标,如果不存在,则输出插入到数列中之后的下标。

int binarySearch(vector<int>& numbers, int target) {
    int len = numbers.size();
    int l = 0, r = len, mid = l+(r-l)/2;
    while (l < r) {
        if (numbers[mid] >= target) {
            r = mid;
        } else {
            l = mid+1;
        }
        mid = l+(r-l)/2;
    }
    return r;
}

// 样例

数列: 1 5 9
target : 1            output : 0
target : 5            output : 1
target : 9            output : 2
target : 0            output : 0
target : 10          output : 3
target : 4            output : 1  

数列: 1 2 2 9
target : 1            output : 0
target : 2            output : 1
target : 9            output : 3
target : 0            output : 0
target : 10          output : 4
target : 4            output : 3  

binary search模板总结

标签:source   查找   查找算法   tar   down   位置   常用   return   输出   

原文地址:https://www.cnblogs.com/yinzm/p/8744727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!