C++ 语言基础 —— STL —— 算法 —— 二分查找算法
生活随笔
收集整理的這篇文章主要介紹了
C++ 语言基础 —— STL —— 算法 —— 二分查找算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
STL 中,在 <algorithm> 頭文件里提供了兩個利用二分查找的方法在一個排好序的數組中進行查找。
在一個從小到大的排好序的數組中:
- lower_bound(begin,end,num):從數組的 begin 位置到 end-1 位置二分查找第一個大于等于 num 的數字,找到返回該數字的地址,不存在則返回 end
- upper_bound( begin,end,num):從數組的 begin 位置到 end-1 位置二分查找第一個大于 num 的數字,找到返回該數字的地址,不存在則返回 end
而在一個從大到小的排好序的數組中:
- lower_bound( begin,end,num,greater<type>() ):從數組的 begin 位置到 end-1 位置二分查找第一個小于等于 num 的數字,找到返回該數字的地址,不存在則返回 end
- upper_bound( begin,end,num,greater<type>() ):從數組的 begin 位置到 end-1 位置二分查找第一個小于 num 的數字,找到返回該數字的地址,不存在則返回 end。
可以通過這兩個方法返回的地址減去起始地址 begin,即可得到數字在數組中的下標。
int cmp(int a,int b){return a>b; } int num[5]={1,4,6,9,8}; int pos;sort(num,num+5);//按從小到大 pos=lower_bound(num,num+5,7)-num;//返回數組中第一個大于或等于7的值 pos=upper_bound(num,num+5,7)-num;//返回數組中第一個大于7的值sort(num,num+6,cmp);//按從大到小 pos=lower_bound(num,num+5,7,greater<int>())-num;//返回數組中第一個小于或等于7的值 pos=upper_bound(num,num+5,7,greater<int>())-num;//返回數組中第一個小于7的值?
總結
以上是生活随笔為你收集整理的C++ 语言基础 —— STL —— 算法 —— 二分查找算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乘法逆元(洛谷-P3811)
- 下一篇: C++语言基础 —— STL —— 容器