9种排序算法之性能比较
本系列对9种排序算法(插入,选择,冒泡,快速,归并,堆,计数,基数,希尔)做一下性能的比较,关于算法本身本系列不再赘述,直接给出代码实现、测试数据及分析报告。
(一)插入排序
/*!
* 插入排序
*/
double InsertionSort(int *data, int size)
{
double res = 0;
int tmp;
int j;
//EClock<> Ek;
for(int i=1; i<size; i++) {
tmp = data[i];
j = i-1;
while(j>=0 && data[j] > tmp) {
data[j+1] = data[j];
j--;
}
data[j+1] = tmp;
}
//res = Ek.microsecond();
return res;
}
测试结果:
时间单位:us
10 | 0.301869933 |
20 | 0.603739867 |
50 | 0.603739867 |
100 | 2.414959466 |
200 | 9.961707799 |
500 | 56.75154746 |
1000 | 129.8040713 |
2000 | 488.727422 |
3000 | 1808.80464 |
4000 | 1921.703995 |
5000 | 3003.907706 |
6000 | 4299.83533 |
7000 | 5935.064759 |
8000 | 7674.439314 |
9000 | 10589.89913 |
10000 | 12203.99766 |
20000 | 51320.60549 |
50000 | 305791.5256 |
100000 | 1255023.946 |
200000 | 4878850.238 |
500000 | 32029114.45 |
800000 | 89666040.99 |
1000000 | 127918208.6 |
变化趋势: