1.排序的基本概念
排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)。
正序:待排序序列中的记录已按关键码排好序。
逆序(反序):待排序序列中记录的排列顺序与排好序的顺序正好相反。
趟:在排序过程中,将待排序的记录序列扫描一遍称为一趟。
通常,一次排序过程需要进行多趟扫描才能完成。
2.排序算法的稳定性:
假定在待排序的记录集中,存在多个具有相同键值的记录,
若经过排序,这些记录的相对次序仍然保持不变,
即在原序列中,ki=kj且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
3.排序的分类-根据排序数据在内存中还是在外存中:
排序的分类-根据排序过程中所进行的基本操作分:
基于比较:基本操作——关键码的比较和记录的移动,其最差时间下限已经被证明为O(nlog2n)。
插入排序
交换排序
选择排序
归并排序
不基于比较:根据关键码的分布特征。比如,桶式排序,基数排序(多关键字排序)
分配排序
桶式排序
基数排序
2. 外排序:由于待排序的记录个数太多,不能同时放置在内存,而需要将一部分记录放置在内存,另一部分记录放置在外存上,整个排序过程需要在内外存之间多次交换数据才能得到排序的结果
4.排序的储存结构
从操作角度看,排序是线性结构的一种操作,待排序记录可以用顺序存储结构或链接存储结构存储。