题目描述:
给定15个按从大到小已经有序的整数,将其放在一个数组中。另外输入一个整数,要求使用二分查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则输出“NO”。
输入格式:
第一行有15个整数,即15个从大到小已有序的原始整数。
第二行有一个整数,表示需要使用折半查找法查找的元素。
输出格式:
如果查找到了输入的整数,则输出此数在序列中的序号,即第一个是0,最后一个是14。
如果查找不到这个整数,则输出“NO”。
请注意不需要输出引号,并请注意行尾输出换行。
样例输入:
1 3 5 7 9 10 13 15 16 17 20 21 22 23 24 10
样例输出:
5
时间限制: 1000ms
空间限制: 32MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,a[101]={};
for(int i=0;i<15;i++){
cin>>a[i];
}
cin>>m;
int l=0,r=14,mid=0;
while(l<=r){
mid=(l+r)/2;
if(m<a[mid]){
r=mid-1;
}else if(m>a[mid]){
l=mid+1;
}else{
cout<<mid<<endl;
return 0;
}
}
cout<<"NO"<<endl;
return 0;
}