高级排序算法一定比简单排序算法好吗?
以前在做毕业论文的时候研究了这个问题,今天突然想把它写出来分享一下。
事实上高级排序算法未必一定比简单排序算法好。
先是在原始数据已有序的情况下对比分析快速排序、希尔排序、堆排序(具体算法请参考http://www.cnblogs.com/2010Freeze/articles/2047940.html)
发现在这种情况下希尔排序是最好的,分析以后得出的结论是希尔排序本身是由插入排序修改而来的,它仍然保留了部分插入排序的特性。
我们知道在排序数据较多的情况下,高级排序算法比简单排序算法的平均性能好的多。
那么,当排序数据较少时,哪个更好的,我没有做对比实验,当时是用时间长短来衡量算法性能,如果规模较小,时间基本为0,此时得采用 记录 算法操作步骤的多少 对算法进行评价。
但是,我曾经在一个快速排序里面混合了一部分的直接插入排序,我们知道快速排序是使用递归的算法,n规模的快排将变成 2个n-1/2的快排。设定一个指标 当规模小于这个指标时 直接使用直接插入排序。
使用时间进行衡量,对比单一快速排序,混合快速排序的性能要好很多。
总结
事实上,不止排序算法,很多算法都一样。
特别是那些基于递归调用的高级算法,可以考虑使用混合策略进行改进。