この擬似コードを 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;
}