二分查找
yang20141109
这个作者很懒,什么都没留下…
展开
-
有序数组中插入位置
给定一个有序数组和一个目标值,找到目标值在有序数组中的插入位置。比如:[1,3,5,6], 5 → 2[1,3,5,6], 2 → 1[1,3,5,6], 7 → 4[1,3,5,6], 0 → 0int searchInsert(vector& nums, int target){ int start = 0; int last = nums.size(); while原创 2016-07-25 17:26:51 · 1028 阅读 · 0 评论 -
标准库中二分查找算法
标准库中二分搜索算法:每个算法都提供两个版本,第一个版本用元素类型的小于运算符(lower_bound(beg, end, val);lower_bound(beg, end, val, comp);返回一个迭代器,表示第一个大于等于val的元素,如果不存在这样的元素,则返回end。upper_bound(beg, end, val);upper_bound(beg, end, val, co原创 2016-07-17 20:23:56 · 1029 阅读 · 0 评论 -
实现lower_bound和upper_bound算法
lower_bound算法返回第一个大于等于给定值所在的位置。设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置。当start和last指向相同位置时循环结束。mid指向[start,last)区间的中间位置,当中间位置元素值大于等于给定val时,说明第一个大于等于val值在mid位置的左边,更新last为mid。当中间位置元素值小于给定的val原创 2016-07-17 21:26:32 · 5408 阅读 · 1 评论