生成c++代码(有A和B两个数组,A数组中存储500个2000以内的随机整数,B数组中存储10个2000以内的随机整数,完成以下操作:用顺序查找算法显示B数组中每个元素在A数组中的位置,并返回该算法所用时间;用折半查找算法显示B数组中每个元素在A数组中的位置,并返回该算法所用时间;)
时间: 2024-03-22 17:42:08 浏览: 16
好的,下面是您需要的 C++ 代码:
```c++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
// 生成A数组和B数组
const int N = 500;
const int M = 10;
int A[N], B[M];
void generateArray()
{
srand(time(NULL));
for (int i = 0; i < N; i++)
A[i] = rand() % 2000 + 1;
for (int i = 0; i < M; i++)
B[i] = rand() % 2000 + 1;
}
// 顺序查找算法
int sequential_search(int arr[], int n, int x)
{
for (int i = 0; i < n; i++)
if (arr[i] == x)
return i;
return -1;
}
// 折半查找算法
int binary_search(int arr[], int n, int x)
{
int left = 0, right = n - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main()
{
generateArray();
// 顺序查找B数组中每个元素在A数组中的位置
clock_t start_time = clock();
for (int i = 0; i < M; i++)
{
int pos = sequential_search(A, N, B[i]);
cout << B[i] << "在A数组中的位置为:" << pos << endl;
}
clock_t end_time = clock();
cout << "顺序查找算法所用时间:" << (double)(end_time - start_time) / CLOCKS_PER_SEC << "秒" << endl;
// 折半查找B数组中每个元素在A数组中的位置
sort(A, A + N); // 把A数组排序
start_time = clock();
for (int i = 0; i < M; i++)
{
int pos = binary_search(A, N, B[i]);
cout << B[i] << "在A数组中的位置为:" << pos << endl;
}
end_time = clock();
cout << "折半查找算法所用时间:" << (double)(end_time - start_time) / CLOCKS_PER_SEC << "秒" << endl;
return 0;
}
```
注意:这段代码只是生成A和B数组并用顺序查找和折半查找算法查找B数组元素在A数组中的位置,如果您需要将代码放入一个完整的程序中,还需要添加必要的头文件、命名空间、输入输出等部分。