您的位置:首页 > 其它

排序算法总结

2017-05-11 13:43 155 查看
排序的稳定性



经过对总分的降序排序后,总分高的排在前列。,此时对于令狐冲和张无忌而言,未排序时是令狐冲在前,那么他们总分排序后,分数相等的令狐冲依然应该在前,这样才算是稳定的排序,如果他们二者颠倒了,则此排序是不稳定的了。
排序算法总结
根据排序过程中借助的主要操作,我们将内排序分为:插入排序、交换排序、选择排序和归并排序四类。



 

将七种算法的各种指标进行对比

 

从算法的简单性来看,我们将七种算法分为两类:
简单算法:冒泡、简单选择、直接插入。
改进算法:希尔、堆、归并、快速。



 
从平均情况来看,显然最后三种改进算法要胜过希尔排序,并远远胜过前三种简单算法。

从最好情况看,反而冒泡和直接插入排序要更胜一筹,也就是说,如果你的待排序序列总是基本有序,反而不应该考虑四种复杂的改进算法。

从最坏的情况看,堆排序与归并排序又强过快速排序以及其他简单排序

从这三组时间复杂度的数据对比中,我们可以得出这样一个认识。堆排序和归并排序就像两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较糟糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法,他们反而算不过成绩极普通的冒泡和直接插入。

从空间复杂度来说
,归并排序强调马要跑得快,就得给马吃个饱。快速排序也有相应的空间要求,反而堆排序等都是少量索取,大量付出,对空间要求是O(1)。如果执行算法的软件所处的环境非常在乎内存使用量多少时,选择归并排序和快速排序就不是一个较好的决策了。

从稳定性来看,归并排序独占鳌头,对于非常在乎排序稳定性的应用中,归并排序是个好算法

 从待排序记录的个数上来说,待排序的个数n越小,采用简单排序方法越合适。反之,n越大,采用改进排序方法越合适。这也是为什么对快速排序优化时,增加了一个阀值,低于阀值时换作直接插入排序的原因。

对于数据量不是很大而记录的关键字信息量较大的排序要求,简单排序算法是占优的。另外,记录的关键字信息量大小对那四个改进算法影响不大。
 

总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是,不同场合我们也应该考虑使用不同的算法来应付它
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法