定义一个长度为N的整型数组,数组元素为0~N-1之间的随机数,请定义线性查找函数,并在主函数中调用该线性查找算法实现查找功能,并统计查找过程中,数据元素比较次数
时间: 2024-03-25 21:35:52 浏览: 16
好的,以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int linear_search(int arr[], int n, int x, int *count) {
for (int i = 0; i < n; i++) {
(*count)++; // 计数器加1
if (arr[i] == x) {
return i;
}
}
return -1; // 表示没找到
}
int main() {
srand(time(NULL));
int n = 10; // 数组长度
int arr[n]; // 声明数组
for (int i = 0; i < n; i++) {
arr[i] = rand() % n; // 生成随机数
printf("%d ", arr[i]); // 输出数组元素
}
printf("\n");
int x = 5; // 要查找的元素
int count = 0; // 计数器
int index = linear_search(arr, n, x, &count); // 调用线性查找函数
if (index == -1) {
printf("没有找到元素 %d\n", x);
} else {
printf("元素 %d 的下标为 %d\n", x, index);
}
printf("比较次数为 %d\n", count);
return 0;
}
```
这里的 `linear_search` 函数就是线性查找函数,它接受一个整型数组 `arr`,数组长度 `n`,要查找的元素 `x`,以及一个指向计数器的指针 `count`。函数返回找到的元素下标,如果没有找到则返回 `-1`。
在主函数中,我们首先生成一个长度为 `n` 的随机整型数组 `arr`,然后调用 `linear_search` 函数进行查找,最后输出查找结果和比较次数。
同样地,我们在 `linear_search` 函数中使用了一个计数器 `count`,用来统计比较次数。每比较一次,就将计数器加1。在主函数中,我们将计数器的值输出即可。