排序算法
排序算法 排序的基本概念: 排序 :给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)。 正序 :待排序序列中的记录已按关键码排好序。 逆序(反序 ):待排序序列中记录的排列顺序与排好序的顺序正好相反。 趟 :在排序过程中,将待排序的记录序列扫描一遍称为一趟。通常,一次排序过程需要进行多趟扫描才能完成 排序算法的稳定性: 假定在待排序的记录集中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序仍然保持不变,即在原序列中,ki=kj且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。 对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而证明稳定的特性。 排序算法是否为稳定的是由具体算法决定的: 不稳定的算法在某种条件下可以变为稳定的算法, 而稳定的算法在某种条件下也可以变为不稳定的算法。 稳定性比较: 所有排序方法可分为两类, (1)一类是稳定的,包括直接插入排序、起泡排序、和归并排序,基数桶式排序; (2)另一类是不稳定的,包括直接选择排序