外排序是一种处理极大量以及海量数据的排序方法,适用于数据量大到无法完全加载到内存的情况。外排序通常采用”排序-归并“的策略,在面对海量数据的时候,会将数据分块处理并存储在外部存储的介质例如磁盘上,然后依次将这些数据读入内存并进行排序。
实际上外排序可以看成:将内存作为排序的过渡区间,读入内存主要进行分块数据的排序操作,其他时候数据是放在外部存储介质中进行保存的。
外归并排序是外排序的典型例子,它使用归并排序的思想,执行先排序再归并的操作,从而进行所有数据的排序。这里我们假设总共1GB的数据需要进行排序,而内存只有100MB,它按照如下方法操作:
外排序不仅仅只有外归并排序这一种算法,但这里只对其进行简单介绍,如果以后有时间将会介绍其他几种算法。另外还有外分配排序,其原理类似于内排序中的桶排序。在归并排序和桶排序之间存在数学上的某种对偶性。此外还有一些不耗费附加磁盘空间的原地排序算法。