算法与数据结构【30天】集训营——外部排序的原理及代码详解及排序课后习题解析(26)

外部排序

当我们要排序的文件太大以至于内存无法一次性装下的时候,这时候我们可以使用外部排序,将数据在外部存储器和内存之间来回交换,以达到排序的目的。

这个而我们之前介绍的分而治之的归并排序有异曲同工之妙。

举一个简单的例子:我现在有1TB的数据,但是我的内存只有8GB,请问我应该如何处理这个数据,我们的思想很快就会想到分而治之。

首先将这一个TB的数据划分为不同的文件块,然后每个文件块最好是小于等于我们的内存,然后读取之后,可以用内部排序算法进行排序。

依次将这些文件块里面的数据排序,然后依次读取出每个文件块的最小元素,按照两两比较的思想,然后输出最小的,就这样,一直合并到两个顺串完,如果一个顺串先完,剩下另一个顺串,那么就将剩下的顺串直接拷贝到硬盘上。按照这个方法,把合并后的顺串继续合并,直到最终合并成一个总的顺串,排序结束。

具体可以看一下下面的图示:

设待排数据为:80,

猜你喜欢

转载自blog.csdn.net/weixin_47723732/article/details/127478552