upper_bound()與low_bound() 及其返回值問題

前提:一個非降序列!!!!!!

#include "algorithm"

upper_bound() 與 lower _bound()都是 < algorithm > 的一個二分插畫早函數 比較高效(log的時間複雜度)並且 方便

語法格式 lower_bound(數組首地址,數組尾地址,待查元素的值) 由於函數返回的值是 迭代器(似乎是???)所以還要減去數組首地址纔是那個值的下標

lower_bound(數組首地址,數組尾地址,待查元素的值)-數組首地址

要下標,就減去數組首地址

要第幾個元素(>0),就減去數組首地址+1

要獲得值,返回值加*

關於返回值

 

  1. 沒有這個元素的時候,兩個元素的返回值是一樣的。1 2 4 5 這個序列,upp(3)和low(3)都返回2(下標)
  2. 如果只有一個待查元素,low返回那個元素的位置,而upper返回那個元素的位置的後一個位置。1 2 4 5 這個序列upper(2)返回下標2而lower(2)返回下標1
  3. 多個待查元素,lower返回那個元素的位置,upp返回那多個元素中的最後一個的後一個位置。1 2 2 4 5 這個序列 upper(2)返回下標3的位置,lower(2)返回下標1的位置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章