1、随机产生1000个整数构成的递增序列,使用折半查找算法查找指定的整数,并统计比较次数。提示:可用a[i]=a[i-1]+ rand()%10+1产生递增序列。 算法思想,源码C语言
时间: 2024-03-01 07:51:13 浏览: 134
排序算法_随机生成1000个数字_用排序算法排序并比较算法的赋值次数_
5星 · 资源好评率100%
算法思路:
1. 首先生成一个递增序列,长度为1000,元素随机生成;
2. 使用折半查找算法查找指定整数,如果找到了就返回其下标,否则返回-1;
3. 在查找的过程中,使用一个计数器记录比较次数。
源码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LENGTH 1000
// 生成递增序列
void generate(int *arr) {
int i;
arr[0] = rand() % 100;
for (i = 1; i < LENGTH; i++) {
arr[i] = arr[i-1] + rand() % 10 + 1;
}
}
// 折半查找
int binary_search(int *arr, int x, int *count) {
int left = 0, right = LENGTH - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
(*count)++;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr[LENGTH];
int x, index, count = 0;
srand((unsigned)time(NULL));
generate(arr);
printf("请输入要查找的整数:");
scanf("%d", &x);
index = binary_search(arr, x, &count);
if (index == -1) {
printf("未找到该数!\n");
} else {
printf("该数在序列中的下标为:%d\n", index);
}
printf("比较次数为:%d\n", count);
return 0;
}
```
在执行程序的时候,输入要查找的整数即可,程序将会输出该数在序列中的下标以及比较次数。
阅读全文