私は、これらの並べ替えアルゴリズムにかかる時間を計算することに取り組んできました。すべてのソート方法を 2000 回ループし、合計期間を 2000 に分割して、期間の適切な値を取得しました。問題は; 並べ替えメソッドの特定のコード部分にかかる時間の正確な値は示していません。つまり、duration
変数は、プログラム フローを通じて増加する値を示します。たとえば、 forは 0.000635 をN = 10000
与え、 0.00836 を与え、0.018485 を与え、これらの順序を変更すると、アルゴリズムの種類に関係なく、プログラムを介して上がります。プロセスごとに異なる期間の値を指定しようとしましたが、うまくいきませんでした。誰かがこの問題を理解するのを手伝ってくれますか、それとも他の時間測定スタイルはありますか?insertionSort()
mergeSort()
heapSort()
duration
これがばかげた問題であり、私の文法が悪い場合は申し訳ありません。
int main(){
srand(time(NULL));
int N, duration;
cout << endl << "N : ";
cin >> N; // N is array sze.
cout << endl;
// a4 would be the buffer array (for calculating proper duration).
int *a1 = new int[N];
int *a2 = new int[N];
int *a3 = new int[N];
int *a4 = new int[N];
cout << endl << "Unsorted array : " << endl;
for (int i = 0; i < N; i++){
a4[i] = rand() % 100;
cout << a4[i] << " ";
}
/*------------------------------------------------------------------------------*/
cout << endl << endl <<"Sorting with Insertion Sort, please wait..." << endl;
for(int i = 0; i < 2000; i++){
a1 = a4;
duration = clock();
insertionSort(a1, N - 1);
duration += clock() - duration;
}
cout << endl << "Insertion sort : " << endl;
print(a1, N);
cout << endl << endl << "Approximate duration for Insertion Sort : ";
cout << (double) (duration / 2000) / CLOCKS_PER_SEC;
cout << " s." << endl;
/*------------------------------------------------------------------------------*/
cout << endl << endl << "Sorting with Merge Sort, please wait..." << endl;
for(int i = 0; i < 2000; i++){
a2 = a4;
duration = clock();
mergeSort(a2, 0, N - 1);
duration += clock() - duration;
}
cout << endl << "Merge sort : " << endl;
print(a2, N);
cout << endl << endl << "Approximate duration for Merge Sort : ";
cout << (double) (duration / 2000) / CLOCKS_PER_SEC;
cout << " s."<< endl << endl;
/*------------------------------------------------------------------------------*/
cout << endl << endl << "Sorting with Heap Sort, please wait..." << endl;
for(int i = 0; i < 2000; i++){
a3 = a4;
duration = clock();
heapSort(a3, N);
duration += clock() - duration;
}
cout << endl << "Heap sort : " << endl;
print(a3, N);
cout << endl << endl << "Approximate duration for Heap Sort : ";
cout << (double) (duration / 2000) / CLOCKS_PER_SEC;
cout << " s."<< endl << endl;
return 0;
}