我先写比较常用的排序算法
先放一张图:
排序的分类
稳定排序和不稳定排序:
稳定排序和不稳定排序:假设Ki=Kj(1≤i≤n,1≤j≤n,i≠j),且在排序前的序列中Ri领先于Rj(即i < j)。若在排序后的排序中Ri仍领先于Rj,即那些具有相同关键字的记录,经过排序后它们的相对次序仍然保持不变,则称这种排序方法是稳定的;反之,若Rj领先于Ri,则称所用的方法是不稳定的.
外部排序和内部排序:
在排序中,若数据表中的所有记录的排列过程都是在内存中进行的,称为内部排序。由于待排序的记录数量太多,在排序过程中不能同时把全部记录放在内存,需要不断地通过在内存和外存之间交换数据元素来完成整个排序的过程,称为外部排序。在外部排序情况下,只有部分记录进入内存,在内存中进行内部排序,待排序完成后再交换到外部存储器中加以保存。然后再将其它待排序的记录调入内存继续排序。这一过程需要反复进行,直到全部记录排出次序为止。显然,内部排序是外部排序的基础,本章主要介绍内部排序的各种方法,
内部排序的过程是逐步扩大有序序列长度的过程。逐步扩大有序序列长度的方法有:
- 插入类
将无序子序列中的一个或几个记录“插入”到有序序列中,从而增加记录的有序序列的长度。 - 选择类
从记录的无序子序列中“选择”关键字最小或最大的记录,并将它加入到有序序列中,以此方法增加记录的有序序列的长度。 - 交换类
通过“交换”无序序列中的相邻或不相邻的记录从而得到其中关键字最小或最大的记录,并将它加入到有序序列中,以此方法增加记录的有序序列的长度。 - 归并类
通过“归并”两个或两个以上的记录有序子序列,逐步增加记录有序序列的长度。 - 等等