老师,我写了一个希尔排序, 用长度为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
相似问题
