排序
排序的基本概念
1.排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排 序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满 足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)。
2.正序:待排序序列中的记录已按关键码排好序。
3.
逆序(反序):待排序序列中记录的排列顺序与排好序的顺序正好相反。
4.趟:在排序过程中,将待排序的记录序列扫描一遍称为一趟。
通常,一次排序过程需要 进行多趟扫描才能完成
。
5.排序算法的稳定性:
假定在待排序的记录集中,存在多个具有相同键值的记录,
若经过排序,这些记录的相对次序仍然保持不变,
即在原序列中,ki=kj且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
注:对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;
而对于稳定的排序算法,必须对算法进行分析从而证明稳定的特性。
需要注意的是,排序算法是否为稳定的是由具体算法决定的。
不稳定的算法在某种条件下可以变为稳定的算法,
而稳定的算法在某种条件下也可以变为不稳定的算法。
6.排序的分类:根据排序数据在内存中还是在外存中
内排序:在排序的整个过程中,待排序的所有记录全部被放置在内存中
。
外排序: