C语言1、编写程序,随机生成1000个在指定值域内的整数; 2、 分别用顺序查找法、折半查找法进行查找,并记录查找过程中的比较次数,比较二个算法的性能。
时间: 2025-01-19 08:13:44 浏览: 44
在C语言中,你可以使用stdlib.h库中的rand()函数生成随机数,以及time()函数设置随机数种子以获得更随机的结果。以下是实现这个需求的一个简要步骤:
1. 定义生成指定范围内随机整数的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int random_number_in_range(int lower, int upper) {
return lower + rand() % (upper - lower + 1);
}
```
2. 创建一个主函数来生成1000个随机数并存储它们:
```c
void generate_random_numbers(int arr[], int n) {
srand(time(0)); // 设置随机数种子
for (int i = 0; i < n; i++) {
arr[i] = random_number_in_range(1, 100); // 指定范围1到100
}
}
```
3. 定义顺序查找和折半查找的函数:
```c
int sequential_search(int arr[], int target, int n) {
int count = 0;
for (int i = 0; i < n; i++, count++) {
if (arr[i] == target) return count;
}
return -1; // 如果没找到返回-1
}
int binary_search(int arr[], int target, int left, int right) {
int count = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) return count + 1;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
count += 1;
}
return -1;
}
```
4. 测试和比较查找性能:
```c
int main() {
int numbers[1000];
generate_random_numbers(numbers, 1000);
int comparison_count_seq = 0;
for (int i = 0; i < 1000; i++) {
comparison_count_seq += sequential_search(numbers, i+1, 1000);
}
int comparison_count_bin = 0;
for (int i = 0; i < 1000; i++) {
comparison_count_bin += binary_search(numbers, i+1, 0, 999);
}
printf("顺序查找比较次数: %d\n", comparison_count_seq);
printf("二分查找比较次数: %d\n", comparison_count_bin);
printf("
阅读全文