欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

lower

时间:2023-06-03
binary search算法特别讲究细节,微小的改动都会带来不同的结果,这篇博客将放上lower_bound和upper_bound的实现 lower_bound的实现

说明:inputs是升序排序好的数组,target是要搜索的元素

int lower_bound(vector& inputs, int target) { int l = 0, r = inputs.size() - 1; while (l <= r) { int mid = l + (r - l) / 2; // (l + 2)/2 可能会溢出 if (inputs[mid] < target) { // lower_bound和upper_bound的区别!! l = mid + 1; } else { r = mid - 1; } } return l;}

upper_bound的实现

int upper_bound(vector& inputs, int target) { int l = 0, r = inputs.size() - 1; while (l <= r) { int mid = l + (r - l) / 2; // (l + 2)/2 可能会溢出 if (inputs[mid] <= target) { // lower_bound和upper_bound的区别!! l = mid + 1; } else { r = mid - 1; } } return l;}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。