1、排序的两大类
根据排序过程中所使用的内、外存储器情况的不同,可以将排序分为内部排序(内排序)和外部排序(外排序)。
内排序(internal sorting)是指在排序过程中将全部待排序记录存放在内存中进行处理的排序方法。外排序(external sorting)是指将部分数据放在外存中,在排序过程中借助内存逐步调整记录之间的相对位置(即排序过程中需要不断进行内存和外存之间的数据交换)。
由以上概念可知,外排序的速度比内排序的速度要慢很多。内排序适用于记录个数不多的小文件,外排序则社用于记录个数比较多,不能一次将全部记录装入内存的大文件。
1.1、内排序
内排序的方法有很多种,根据排序过程中所采用的排序策略不同,可以分为:交换排序、插入排序、选择排序、归并排序和基数排序。
注:归并排序和基数排序无介绍内容。
1.1.1、交换类排序
交换排序是指对交换记录的位置进行排序的方法。典型的交换类排序方法:冒泡排序和快速排序。
交换类排序的基本思想:两两比较待排序的记录的关键字,发现两个记录的次序相反时就进行交换,直到没有反序的记录为止。
交换类排序的特点:通过记录的交换将关键字较大(较小)的记录向排序表的一端移动,关键字较小(较大)的记录向排序表的另一端移动。
1.1.2、插入类排序
插入类排序是指将待排序记录插入排序表适当位置的排序方法。典型的交换类排序方法:直接插入排序和希尔排序。
插入类排序的基本思想:将一个大排序的记录按其关键字大小,插入到前面已经排好序的序列中的适当位置,直到全部记录插入为止,并且插入后的序列仍然有序。
插入类排序的特点:通过将无序区的记录插入到排序表的表头,使其逐步扩充至整个无序区。
1.1.3、选择类排序
选择类排序是指将依次筛选无序区记录关键字最大或最小进行排序的方法。典型的选择类排序方法:简单选择排序和堆排序。
选择类排序的基本思想:每一趟从待排序的记录中选出关键字最小(或最大)的记录,顺序放在已排好序的字表的最后(或最前),直到全部记录排序完毕。
选择类排序的特点:每趟排序只选择最大(或最小)关键字的记录。
1.2、外排序
外部排序的过程主要是依据数据的内外存交换和"内部归并"两者结合起来实现的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。