我很难将这个伪代码翻译成 C++。目标是在 A[] 中生成随机数并使用插入排序对它们进行排序,然后以毫秒为单位获取执行时间。插入排序将运行 m=5 次。每个 n 值应为 100、200、300、....、1000。因此,例如,如果 n=100,那么它将使用 5 组不同的随机数运行 5 次,然后对 n=200 执行相同的操作,等等...
我已经写了我的插入排序并且它有效,所以我没有包括它。我真的很难将这个伪代码翻译成我可以使用的东西。我包括了我的尝试和伪代码,以便您进行比较。
伪代码:
main()
//generate elements using rand()
for i=1 to 5
for j=1 to 1000
A[i,j] = rand()
//insertion sort
for (i=1; i<=5; i=i+1)
for (n=100; n<=1000; n=n+100)
B[1..n] = A[i,n]
t1 = time()
insertionSort(B,n)
t2 = time()
t_insort[i,n] = t2-t1
//compute the avg time
for (n=100; n<=1000; n=n+100)
avgt_insort[n] = (t_insort[1,n]+t_insort[2,n]+t_insort[3,n]+...+t_insort[5,n]+)/5
//plot graph with avgt_insort
这是我的尝试:
我对 t_insort 和 avgt_insort 感到困惑,我没有将它们写入 C++。我要把这些做成新的数组吗?我也不确定我是否正确地做我的时间。我在这个运行时有点新,所以我还没有真正把它写成代码。
#include <iostream>
#include <stdlib.h>
#include <time.h>
int main()
{
int A[100];
for(int i=1; i<=5; i++)
{
for(int j=1; j<=1000; j++)
{
A[i,j] = rand();
}
}
for(int i=0;i<=5; i++)
{
for(int n=100; n<=1000; n=n+100)
{
static int *B = new int[n];
B[n] = A[i,n];
cout << "\nLength\t: " << n << '\n';
long int t1 = clock();
insertionSort(B, n);
long int t2 = clock();
//t_insort
cout << "Insertion Sort\t: " << (t2 - t1) << " ms.\n";
}
}
for(int n=100; n<=1000; n=n+100)
{
//avt_insort[n]
}
return 0;
}