外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。
大部分内部排序算法都用到内存可直接寻址的事实。如果输入数据再磁盘上,那么所有这些操作都失去了它们的效率,因为磁带上的元素只能被顺序访问。
外排序通常采用的是一种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依次进行,将待排序数据组织为多个有序的临时文件。而后在归并阶段将这些个临时文件组合成一个大的有序文件,也即排序结果。