0

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

2 に答える 2