P166 9.有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
即二分法查找。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int arr[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
int i = 0, number = 0;
int len = 15;//数组长度
printf("请输入一个整数:");
scanf("%d", &number);
//开始查找
int left = 0, right = len-1;
while(left <= right) {
int mid = (right + left) / 2;
if (number > arr[mid]) {
left = mid + 1;
}
else if (number < arr[mid]) {
right = mid - 1;
}
else {
printf("该数为:arr[%d],数组中第%d个元素", mid, mid+ 1);
break;
}
}
if (left > right) {
printf("无此数");
}
return 0;
}
运行结果;