外部排序
标签:pre 初始化 参与 div image src 过多 for 堆排
外排序问题的出现,主要是因为内存不够。当需要排序的数据量过多,以至于无法一次性把所有的数据都放入内存,这导致了外排序问题的出现。解决大数据量排序的方法是:先分块排序,后进行块合并。
外排序步骤
- 把原数据分成几段读入内存,以至于每一块都可以完整的在内存中进行排序,排序好后,写入外部存储设备。
- 归并已排序好的数据块。
这就是归并排序在外排序中的应用。
对每块数据进行排序,可以使用各种内排序方法:快速排序、归并排序、堆排序等。这个比较简单,下面模拟一个对排序好的数据块进行归并的过程。
#include
#include
#include
using namespace std;
const int MAX = 100;
int key[5][5] = {
{ 3, 5, 7, MAX },
{ 1, 6, 9, MAX },
{ 2, 4, 8, MAX },
{ 0, 12, 14, MAX },
{ 10, 11, 13, 15, MAX }
};
void sort()
{
//使用pos记录每行正在参与排序的元素下标
int pos[5];
//初始化
memset(pos, 0, 5*sizeof(int));
int i, min, data;
while (true)
{
//找出第一个排序未完成的队列
i = 0;
while (i
这是一个常见的5路归并的外排序模拟。对于每块数据的排序过程已经省略掉了,故每块数据初始时都是有序的,我们关注的是归并的过程。在每块数据的最后加一个最大值,作为块结束的标记。
实验结果截图如下:
外部排序
标签:pre 初始化 参与 div image src 过多 for 堆排
原文地址:https://www.cnblogs.com/wuyepeng/p/9750079.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
外部排序
文章链接:http://soscw.com/index.php/essay/86028.html
评论