c语言有15个已经排好序的整数存放在一个数组中,输入1个整数,要求用二分查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出无此数。
时间: 2023-07-16 15:16:27 浏览: 93
好的,下面是C语言的代码实现:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid + 1;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 没有找到该数
}
int main() {
int arr[15] = {2, 4, 5, 6, 7, 9, 10, 12, 13, 15, 17, 18, 20, 22, 24};
int n = sizeof(arr) / sizeof(arr[0]);
int key;
printf("请输入一个整数:");
scanf("%d", &key);
int index = binarySearch(arr, n, key);
if (index == -1) {
printf("无此数\n");
} else {
printf("该数在数组中的位置为%d\n", index);
}
return 0;
}
```
这里用到了二分查找法,先将数组按照从小到大的顺序排好,然后在数组中间位置开始查找,如果找到该数,则输出该数在数组中的位置;如果没有找到,则继续在左半部分或右半部分查找。如果最后仍然没有找到该数,则输出“无此数”。
阅读全文