7-3 查找(折半查找)分数 30
作者 jibaoyu
单位 江西理工大学
有15个整数按升序提排列,现输入一个数n,请写程序,用折半查找法判断该数在序列中是否存在,若存在则指出是第几个。数组的初值如下:
{1,4,6,9,13,16,19,28,40,100,123,222,236,679,899}
输入格式:
输入要查找的整数n。
输出格式:
如果找到输出:"找到了,在第...个。"
如果没有找到输出:"没有找到。"
输出的字符串中间标点为中文状态。
输入样例1:
在这里给出一组输入。例如:
28
输出样例1:
在这里给出相应的输出。例如:
找到了,在第8个。
输入样例2:
在这里给出一组输入。例如:
15
输出样例2:
在这里给出相应的输出。例如:
没有找到。
输入样例3:
在这里给出一组输入。例如:
899
输出样例3:
在这里给出相应的输出。例如:
找到了,在第15个。
#include <stdio.h>
int main()
{
// 初始化数组
int nums[15] = {1,4,6,9,13,16,19,28,40,100,123,222,236,679,899};
int n;
scanf("%d", &n);
int left = 0, right = 14;
while (left <= right) {
int mid = (left + right) / 2;
if (n == nums[mid]) {
printf("找到了,在第%d个。", mid + 1);
return 0;
} else if (n < nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
printf("没有找到。");
return 0;
}