用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found。
输入格式:
直接输入一个要查找的正整数key。没有其它任何附加字符。
输出格式:
找到则在一行中按照“weizhi:下标”的格式输出其在数组中对应的下标,否则输出not found。
输入样例:
4
输出样例:
weizhi:3
输入样例:
15
输出样例:
not found
分析:
常规二分查找,我这里t的作用是标记。就是个记号,一直没找到t就是0,然后返回not found,后面输出的格式注意一下就好。
答案:
#include<stdio.h>
int main(){
int sum[10]={1,2,3,4,5,6,7,8,9,10};
int k,min=0,mid,max=9,t=0;
scanf("%d",&k);
while(min<=max){
mid=(min+max)/2;
if(k==sum[mid]){
printf("weizhi:%d",mid);
t++;
break;
}
else if(k>sum[mid]){
min=mid+1;
}
else if(k<sum[mid]){
max=mid-1;
}
}
if(t==0)printf("not found");
}
如果觉得博主写得不错的话,就点个赞或者关注吧!