老师,我写了一个希尔排序, 用长度为150万的随机数组测试了一下, 为什么比最初版本的快速排序速度还要快很多。
来源:
mm隔心忘年
2017-01-11
/*用希尔排序算法对一随机数组排序*/ template<typename T> void shellSort(T *arr, int n) { for (int gap = n / 2; gap > 0; gap /= 2) for (int i = gap; i < n; i++) { T e = arr[gap]; int j(i); for (int j = i; j > i && e < arr[j]; j -= gap) arr[j] = arr[j-gap]; arr[j] = e; } for (int i = 1; i < n; i++) { T e = arr[i]; int j(0); for (j = i; j > 0 && e < arr[j-1]; j--) arr[j] = arr[j-1]; arr[j] = e; } }
而且 如果是500万个随机数差的更大
吓到我了。。。
写回答
2回答
-
liuyubobobo
2017-01-11
如果是使用VS编译器的话,请确保测试性能是在release模式下运行的哦。不然性能测试的结果非常不准确。具体可以看这个问题:http://coding.imooc.com/learn/questiondetail/3603.html
032017-01-11 -
mm隔心忘年
提问者
2017-01-11
重新做的测试
022017-01-11
相似问题