原文地址:http://blog.sina.com.cn/s/blog_64972ef20100zcmi.html
内排序算法我们学了很多,快速排序、冒泡排序等。这些排序的前提是数据量不大,能够全部读进内存里。外排序是指对大数据量进行排序,数据量大到不能全部读进内存里,必须在内存和外存间换进换出进行排序。
1、将原数据分组进行排序,每组100M,一共9组。 排序过程是读100M进内存,对这100M进行内排序(用快速排序等),然后输出到外存的一个临时文件。接下来读下一个100M。
2、步骤1产生了9个排好序的临时文件。将100M内存分为10个10M的buffer,其中9个作为9个输入文件的buffer,另外一个10M内存作为输出buffer,然后做9路归并排序。
1、内排序中的归并排序是两个两个做归并组成一个大的有序数组然后接着和大数组进行归并。
2、外排序中的归并排序做9路归并,一次性归并完。