描述
二分查找 又叫 折半查找。它采用的是"分治策略"。
給出非降序排列的?n?個整數(shù),查找是否存在某個整數(shù),如果存在,則輸出其位置。
輸入描述
第一行是一個整數(shù)?n(0<n≤200000)?表示整數(shù)的個數(shù)。
接下來是?n?個整數(shù),每個整數(shù)之間用一個空格分隔。
接下來一行是一個整數(shù)?q,表示要查找的關(guān)鍵字個數(shù)。
接下來?q?個整數(shù),表示要查找的關(guān)鍵字?key?。每個?key?之間一個空格分隔。
輸出描述
對每個要查找的?key,輸出一行結(jié)果。
如果找到,輸出?key?在這?n?個整數(shù)的位置,位置從?0?開始編號。
如果找不到,則輸出?Not?Found文章來源:http://www.zghlxwxcb.cn/news/detail-536218.html
一道簡單的oj題,有個注意事項,題目要求位置編號從0開始,所以存入數(shù)組的時候要從[0]開始存,話不多說,上代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-536218.html
#include<iostream>
using namespace std;
int a[200010],b[200010];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int q;
cin>>q;
for(int j=0;j<q;j++)
cin>>b[j];
//開始查找,循環(huán)每一個k
for(int k=0;k<q;k++){
int L=0;
int R=n-1;
while(L<=R){
int mid=L+(R-L)/2;
if(a[mid]>b[k])
R=mid-1;
else if(a[mid]<b[k])
L=mid+1;
else{
cout<<mid<<endl;
break;
}
}
if(L>R)
cout<<"Not Found"<<endl;
}
return 0;
}
到了這里,關(guān)于二分查找--查找整數(shù)位置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!