折半查找法从一个一维数组中寻找指定的一个数,若找到,则返回该数在数组中的相对位置;否则,返回-1。数组大小(不超过100)、待查找元素由键盘输入;数组元素随机产生(0-99),用函数实现。Srand()I: 0~n a[i] = rand()%100折半查找:有序71013 1619293233374143A[0]A[1]23456789A[10]Low = 0 high=10 Mid Key > a[mid] low = mid+1Key < a[mid] high = mid -1 找11,11<29, high
时间: 2023-12-03 09:45:05 浏览: 61
以下是用C语言实现折半查找的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int binary_search(int arr[], int n, int target) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int n, target;
printf("请输入数组大小:");
scanf("%d", &n);
int arr[n];
srand(time(NULL)); // 用系统时间初始化随机数种子
printf("随机生成的数组为:");
for (int i = 0; i < n; i++) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
}
printf("\n请输入要查找的数:");
scanf("%d", &target);
int index = binary_search(arr, n, target);
if (index == -1) {
printf("未找到该数!\n");
} else {
printf("该数在数组中的位置为:%d\n", index);
}
return 0;
}
```
运行结果示例:
```
请输入数组大小:10
随机生成的数组为:92 43 74 13 68 18 4 8 11 24
请输入要查找的数:11
该数在数组中的位置为:8
```