第八章 排序
1. 排序分类:
插入排序:直接插入排序(基于顺序查找)、折半插入排序(基于折半查找)、希尔排序(基于逐趟缩小增量);
交换排序:冒泡排序、快速排序;
选择排序:简单选择排序、树形选择排序(锦标赛排序 )、堆排序;
归并排序:2-路归并排序;
基数排序(时间复杂度O( d×n),d=关键字的位数)。
2. 直接插入排序
大量的比较和移动
时间效率: 最好O(n);最坏O(n^2);平均O(n^2);
空间效率:O(1) ——因为仅占用1个缓冲单元
算法的稳定性:稳定
该算法简单、容易实现,适用于待排序记录基本有序或待排序记录较小时。
3. 折半插入排序
比较次数减少了,但移动次数没减少。
时间效率: 最好O(n);最坏O(n^2);平均O(n^2);
空间效率:O(1)
算法的稳定性:稳定
4. 希尔排序
基本思想:先将整个待排记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中记录“基本有序”时,再对全体记录进行一次直接插入排序。
技巧:子序列的构成不是简单地“逐段分割”;
将相隔某个增量dk的记录组成一个子序列;