用c语言:有15个已经排好序的整数存放在一个数组中,输入1个整数,要求用二分查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出无此数。
时间: 2023-11-22 10:54:37 浏览: 37
以下是用C语言实现的二分查找算法:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29};
int n = sizeof(arr) / sizeof(arr[0]);
int target;
printf("请输入一个整数:");
scanf("%d", &target);
int result = binarySearch(arr, n, target);
if (result != -1) {
printf("%d 是数组中第 %d 个元素的值。\n", target, result + 1);
} else {
printf("无此数。\n");
}
return 0;
}
```
其中,`binarySearch` 函数接受一个已经排好序的数组 `arr`、数组长度 `n` 和目标整数 `target`,返回目标整数在数组中的索引位置(从0开始)。如果目标整数不在数组中,则返回 `-1`。主函数中先定义一个已经排好序的数组 `arr`,然后输入一个整数 `target`,调用 `binarySearch` 函数进行查找,最后输出结果。