2016 - 2024

感恩一路有你

使用C 的lower_bound和upper_bound函数进行二分查找

浏览量:4124 时间:2024-01-25 17:58:28 作者:采采

lower_bound和upper_bound是C STL中的两个常用函数,它们可以帮助我们在有序区间中进行二分查找。下面我们来看看它们的具体作用以及如何使用。

lower_bound函数的使用

lower_bound函数可以在一个有序区间中进行二分查找,并返回指向第一个大于等于给定值的元素位置的指针(或迭代器)。但是,在使用该函数之前,我们需要先对区间进行排序,通常会使用sort函数进行排序。

sort(首指针, 尾指针);
lower_bound(首指针, 尾指针, x);

需要注意的是,lower_bound函数接受的区间是左闭右开的,因此在使用时要注意区间的范围。

lower_bound函数的迭代器版本

除了接受指针作为参数外,lower_bound函数还可以接受迭代器作为参数。例如,在使用STL vector时,我们可以直接使用begin()和end()函数来表示区间。

vectorlt;intgt; v;
sort((), v.end());
lower_bound((), v.end(), x);

使用迭代器作为参数,可以更加方便地操作STL容器。

upper_bound函数的使用

upper_bound函数和lower_bound函数的使用方法类似,它返回第一个大于给定值的元素的指针(或迭代器)。

sort(首指针, 尾指针);
upper_bound(首指针, 尾指针, x);

手写lower_bound和upper_bound函数

虽然我们可以手写lower_bound和upper_bound函数,但如果想要节省时间,直接调用STL函数会更加方便。不过,如果你对算法实现感兴趣,也可以尝试手动实现这两个函数。

通过使用C 的lower_bound和upper_bound函数,我们可以快速在有序区间中进行二分查找,节省时间且提高效率。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。