下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
c++二分查找?guī)旌瘮?shù)二分查找也叫折半查找,是一種在有序數(shù)組中快速定位目標值的常用算法。C++標準庫提供了二分查找的庫函數(shù)`binary_search`和`lower_bound`、`upper_bound`、`equal_range`三個相關(guān)函數(shù)。
1.`binary_search`函數(shù):
`binary_search(first,last,value)`函數(shù)用來判斷有序范圍`[first,last)`是否包含了目標值`value`,返回一個bool值。它首先會用二分查找算法找到`value`可能出現(xiàn)的位置,然后返回`true`或者`false`。
```cpp
#include<algorithm>
#include<iostream>
#include<vector>
intmain(){
std::vector<int>nums{1,2,3,4,5,6,7,8,9};
intvalue=6;
if(std::binary_search(nums.begin(),nums.end(),value)){
std::cout<<"Found"<<value<<"inthevector."<<std::endl;
}else{
std::cout<<"Cannotfind"<<value<<"inthevector."<<std::endl;
}
return0;
}
```
2.`lower_bound`函數(shù):
`lower_bound(first,last,value)`函數(shù)用來在有序范圍`[first,last)`中尋找第一個大于或等于目標值`value`的位置,返回一個迭代器。如果沒有找到滿足條件的元素,返回`last`。可以通過迭代器的差值來得到目標值在容器中的索引。
```cpp
#include<algorithm>
#include<iostream>
#include<vector>
intmain(){
std::vector<int>nums{1,2,3,4,5,6,7,8,9};
intvalue=6;
autoit=std::lower_bound(nums.begin(),nums.end(),value);
if(it!=nums.end()){
intindex=std::distance(nums.begin(),it);
std::cout<<"Found"<<value<<"atindex"<<index<<"."<<std::endl;
}else{
std::cout<<"Cannotfind"<<value<<"inthevector."<<std::endl;
}
return0;
}
```
3.`upper_bound`函數(shù):
`upper_bound(first,last,value)`函數(shù)用來在有序范圍`[first,last)`中尋找第一個大于目標值`value`的位置,返回一個迭代器。如果沒有找到滿足條件的元素,返回`last`。可以通過迭代器的差值來得到目標值在容器中的索引。
```cpp
#include<algorithm>
#include<iostream>
#include<vector>
intmain(){
std::vector<int>nums{1,2,3,4,5,6,7,8,9};
intvalue=6;
autoit=std::upper_bound(nums.begin(),nums.end(),value);
if(it!=nums.end()){
intindex=std::distance(nums.begin(),it);
std::cout<<"Found"<<value<<"atindex"<<index<<"."<<std::endl;
}else{
std::cout<<"Cannotfind"<<value<<"inthevector."<<std::endl;
}
return0;
}
```
4.`equal_range`函數(shù):
`equal_range(first,last,value)`函數(shù)用來在有序范圍`[first,last)`中查找與目標值`value`相等的元素,并返回一個包含兩個迭代器的pair對象,分別表示第一個匹配的元素和最后一個匹配的元素的后一個位置。如果沒有找到滿足條件的元素,兩個迭代器都指向目標值應該插入的位置。
```cpp
#include<algorithm>
#include<iostream>
#include<vector>
intmain(){
std::vector<int>nums{1,2,3,4,5,6,6,6,7,8,9};
intvalue=6;
std::pair<std::vector<int>::iterator,std::vector<int>::iterator>range;
range=std::equal_range(nums.begin(),nums.end(),value);
if(range.first!=range.second){
intstart=std::distance(nums.begin(),range.first);
intend=std::distance(nums.begin(),range.second);
std::cout<<"Found"<<value<<"betweenindex"<<start<<"and"<<end-1<<"."<<std::endl;
}else{
std::cout<<"Can
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年設(shè)備供應協(xié)議法律文本范例版
- 2024年網(wǎng)絡安全設(shè)備及服務租賃合同
- 2024年鋼材交易合同范本3篇
- 2024年零售行業(yè)數(shù)據(jù)挖掘與分析服務契約3篇
- 2024年項目復工補充協(xié)議3篇
- 2025年度特殊造型門窗定制與安裝合同范本3篇
- 通信工程割接監(jiān)理細則
- 五金供應商評價語
- 2024液化天然氣國內(nèi)公路物流服務協(xié)議版B版
- 2025年度財務總監(jiān)崗位聘用合同樣本3篇
- 大型集團公司內(nèi)部控制固定資產(chǎn)折舊制度
- 工地食堂經(jīng)營方案及計劃書
- 正畸計劃書模板
- 空中交通管制基礎(chǔ)
- 電梯銷售入門知識培訓課件
- 安徽省馬鞍山市2023-2024學年高一上學期期末考試物理試題(含答案解析)
- 胃鏡室護士崗前培訓
- JBT 14857-2023 氧化鋁焙燒煙氣脫硝裝置 (正式版)
- 閩教版2023版3-6年級全8冊英語單詞表
- 醫(yī)院耗材述職報告
- 膽管結(jié)石的健康宣教課件
評論
0/150
提交評論