#include<stdio.h>
#define M 15
int main() {
int i, a[M], flag=1, number, sign, top, bott, loca, mid;
char c;
printf("Please input number:");
scanf("%d", &a[0]);
i = 1;
while (i < M) {
scanf("%d", &a[i]);
if (a[i] <= a[i - 1]) {
i++;
}
else {
printf("enter this data again:\n");
}
}
printf("\n");
for (i = 0; i < M; i++) {
printf("%5d", a[i]);
}
printf("\n");
while (flag) {
printf("input number to look for:");
scanf("%d", &number);
sign = 0;
top = 0;
bott = M - 1;
if ((number < a[0]) || number > a[M - 1]) {
loca = -1;
}
while ((!sign) && (top <= bott)) {
mid = (top + bott) / 2;
if (number == a[mid]) {
loca = mid;
printf("Has found %d,its position is %d\n", number, loca + 1);
sign = 1;
}
else if (number < a[mid]) {
top = mid + 1;
}
else {
bott = mid - 1;
}
}
if (!sign || loca == -1) {
printf("cannot find %d.\n", number);
}
printf("continue or not(Y/N)?\n");
scanf("%c", &c);
if (c == 'N' || c == 'n')
flag = 0;
}
return 0;
}
从大到小输入数,然后用折半查找法找出要查找的数是第几个元素的值
最新推荐文章于 2024-08-03 21:14:32 发布