c++实现:.随机产生n(n>500)个整数,完成以下操作: (1)对给定的查找集合,顺序查找与给定值k相等的元素,并返回查找所用时间; (2)对给定的有序查找集合,折半查找与给定值k相等的元素,并返回查找所用时间;
时间: 2024-01-22 14:19:26 浏览: 94
c++中如何产生随机数
以下是C++实现的代码:
```cpp
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
const int MAX_NUM = 1000; // 随机数的范围
const int N = 1000; // 随机数的个数
int arr[N];
// 顺序查找
double sequentialSearch(int k)
{
clock_t start, end;
start = clock();
for (int i = 0; i < N; i++)
{
if (arr[i] == k)
{
end = clock();
return double(end - start) / CLOCKS_PER_SEC;
}
}
end = clock();
return double(end - start) / CLOCKS_PER_SEC;
}
// 折半查找
double binarySearch(int k)
{
clock_t start, end;
start = clock();
int left = 0, right = N - 1, mid;
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] == k)
{
end = clock();
return double(end - start) / CLOCKS_PER_SEC;
}
else if (arr[mid] > k)
right = mid - 1;
else
left = mid + 1;
}
end = clock();
return double(end - start) / CLOCKS_PER_SEC;
}
int main()
{
srand(time(NULL)); // 随机种子
for (int i = 0; i < N; i++)
arr[i] = rand() % MAX_NUM;
int k = rand() % MAX_NUM; // 随机生成一个要查找的数
double time1 = sequentialSearch(k);
double time2 = binarySearch(k);
cout << "顺序查找用时:" << time1 << "秒" << endl;
cout << "折半查找用时:" << time2 << "秒" << endl;
return 0;
}
```
程序首先生成了一个包含随机数的数组,然后随机生成一个要查找的数k。接着分别使用顺序查找和折半查找算法对数组进行查找,并计算出查找所用的时间。最后输出时间结果即可。
阅读全文