c++ STL裏lower_bound()與upper_bound()的用法

lower_bound()與upper_bound()是二分查找函數(用於有序區間)

lower_bound():找出序列中第一個大於等於x的數

upper_bound():找出序列中第一個大於x的數

對於一個數組a,在[1,n)的區間內查找大於等於x的數,函數就寫成:

用法1:
*lower_bound(a+1,a+1+n,num)=num; 
//將a[]中第一個≥num的值改爲num
用法2:
int k=*lower_bound(a+1,a+1+n,num); 
//k=a[]從1~n中第一個≥num的值
用法3:
int k=lower_bound(a+1,a+1+n,num)-a; 
//k=a[]從1~n中第一個≥num的值的位置

如果要在一個下降序列裏尋找一個小於x的數呢?

這個亞子:

lower_bound(a + 1, a + 1 + n, x, greater <int> () );

greater()就是c++友情提供的方便的大於函數,這樣就不用自己動手寫一個cmp函數了

它們的實現方式是二分查找 ,存在的意義就是讓我們寫代碼更方便

題目運用:

導彈攔截

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章