ソート・アルゴリズム入門から精通までの9-パフォーマンス・テスト


この論文では,いくつかの比較的速いソートアルゴリズムについて性能テストを行った.テストされたアルゴリズムには、ヒルソート、集計ソート、および高速ソートが含まれます.バブルソートのため,ソートを挿入し,選択ソート速度が遅いため,ここではデータを与えなかった.
すべてのアルゴリズムは同じプログラムで実行され、同じデータが使用されます.マクロMAX_を修正LENの値は、データ規模が1百万、2百万、4百万のそれぞれのテストです.2ラウンドのテストを行い、1ラウンド目のテストでは、集計ソートでmergeを呼び出しました.v 1,第2ラウンドのテストで集計ソート呼び出しmerge_v2_asm. 次はテスト結果です.
第1ラウンドのテスト結果.各規模のデータに対して4回テストし、後3回の平均値をとり、時間単位はミリ秒である.
データ数
1百万
2百万
4百万
ヒルソート
164
413
920
集計ソート
79
160
329
クイックソート
73
176
435
第2ラウンドのテスト結果.各規模のデータに対して4回テストし、後3回の平均値をとり、時間単位はミリ秒である.
データ数
1百万
2百万
4百万
ヒルソート
165
410
939
集計ソート
71
145
309
クイックソート
72
172
436
次はテストプログラムのソースコードです
#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include "sorts.h"

typedef void (*lpfn_sort_t)(ELE_TYPE arr[], int len);

extern void test_bubble_sort();
extern void test_select_sort();
extern void test_insert_sort();
extern void test_shell_sort();
extern void test_quick_sort();
extern void test_merge_sort();
extern void test_heap_sort();

void perf_test(ELE_TYPE *arr, int len, lpfn_sort_t fun, const char *fun_name )
{
	long start,end;

	start=get_millisecond();
	fun(arr,len);
	end=get_millisecond();
	printf("Did %s on %d element spend %d ms
", fun_name,len, end-start); } void all_sort_fun_perf_test() { ELE_TYPE *src=NULL; ELE_TYPE *arr=NULL; int i; src=(ELE_TYPE*)malloc(MAX_LEN*sizeof(ELE_TYPE)); arr=(ELE_TYPE*)malloc(MAX_LEN*sizeof(ELE_TYPE)); srand(time(NULL)); for (i=0;i