排序算法理论分析

一、分类

1.插入排序类:直接插入排序、希尔排序

2.选择排序类:简单选择排序、堆排序

3.交换排序:冒泡排序、快速排序

4.归并排序类:归并排序

二、比较

从算法简单性来看分为两类:

l 简单算法:冒泡、简单选择、直接插入

l 改进算法:希尔、堆、归并、快速

1.从平均情况来看:最后三种改进算法胜过希尔排序。

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

3.从最坏情况看,堆排序与归并排序有强过快速排序以及其他简单排序。

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

5.从空间复杂度来说,归并排序强调要马儿跑,就要让它多吃草。快速排序也有相应的空间需求,反而堆排序等却都是少量索取,大量付出,对空间的要求是O(1)

6.从稳定性来看,归并排序独占鳌头。

7.从待排序记录的个数来说,待排序的个数n越小,采用简单排序方法越适合。反之,n越大,采用改进排序方法越合适。

总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是不同场合我们也应该考虑使用不同的算法来应对它。

原文地址:https://www.cnblogs.com/littlewriter/p/5125643.html