最近总结了以下排序算法:
- 插入排序:直接插入排序,希尔排序
- 交换排序:冒泡排序,快速排序(挖坑法,前后指针法,左右指针法)
- 选择排序:直接选择排序,堆排序
- 归并排序
所以想对这些排序算法再做一个对比。
一、稳定性
二、时间复杂度
实验了各种排序算法需要的运行时间:
2000个元素时:
20000个元素时:
50000个元素时:
100000个元素时:
从上面结果可以看出:直接插入排序(direct_insert)、直接选择排序(select_direct)、冒泡排序(bubble)耗时随着数据量的增加,耗时增加的非常快。
接下来,我们再来对比其他几种排序算法的耗时:
200000个元素:
500000个元素:
1000000个元素:
2000000个元素:
10000000个元素:
从上面的结果可以看出来:快速排序(挖坑法,前后指针法,左右指针法)的耗时最少,归并排序(merge)其次,堆排序(heap)和希尔排序(shell)最多。
结论:当数据量非常多时,用快速排序的效率最高。