一、分类
1.插入排序类:直接插入排序、希尔排序
2.选择排序类:简单选择排序、堆排序
3.交换排序:冒泡排序、快速排序
4.归并排序类:归并排序
二、比较
从算法简单性来看分为两类:
l 简单算法:冒泡、简单选择、直接插入
l 改进算法:希尔、堆、归并、快速
1.从平均情况来看:最后三种改进算法胜过希尔排序。
2.从最好情况看,反而冒泡和直接插入排序更胜一筹,也就是说,如果待排序序列基本有序,反而不应该考虑4种改进算法。
3.从最坏情况看,堆排序与归并排序有强过快速排序以及其他简单排序。
4.从时间复杂度数据对比,可以得出:堆排序和归并排序就像是两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较糟糕环境会变得差强人意。但是他们都来比赛计算个位数的加减法,他们反而算不过成绩极普通的冒泡和直接插入。
5.从空间复杂度来说,归并排序强调要马儿跑,就要让它多吃草。快速排序也有相应的空间需求,反而堆排序等却都是少量索取,大量付出,对空间的要求是O(1)。
6.从稳定性来看,归并排序独占鳌头。
7.从待排序记录的个数来说,待排序的个数n越小,采用简单排序方法越适合。反之,n越大,采用改进排序方法越合适。
总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是不同场合我们也应该考虑使用不同的算法来应对它。