lower_bound( ) 和 upper_bound( ) 的用法

含義

lower_bound( ) 和 upper_bound( ) 都是用二分查找在一個有序的數列中進行查詢的

① 在從小到大的有序數列中

lower_bound(begin, end, num);
是從數組 begin 位置到 end - 1位置二分查找第一個大於等於num的數字,返回這個數字的地址,不存在則返回end。返回值減去begin即能得到數字在數組中的下標。

upper_bound(begin, end, num);
是從數組 begin 位置到 end - 1位置二分查找第一個大於num的數字,返回這個數字的地址,不存在則返回end。返回值減去begin即能得到數字在數組中的下標。

② 在從大到小的有序數組中

我們需要進行重載

lower_bound(begin, end, greater<type>());
是從數組 begin 位置到 end - 1位置二分查找第一個小於等於num的數字,返回這個數字的地址,不存在則返回end。返回值減去begin即能得到數字在數組中的下標。

upper_bound(begin, end, greater<type>());
是從數組 begin 位置到 end - 1位置二分查找第一個小於num的數字,返回這個數字的地址,不存在則返回end。返回值減去begin即能得到數字在數組中的下標。

應用

lower_bound( ) 和 upper_bound( ) 能在數組、vector等應用。

參考來源

https://blog.csdn.net/qq_40160605/article/details/80150252

發佈了184 篇原創文章 · 獲贊 24 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章