标签:style blog http os 使用 io for 数据 ar
外排序
外排序问题的出现,主要是因为内存不够。当需要排序的数据量过多,以至于无法一次性把所有的数据都放入内存,这导致了外排序问题的出现。解决大数据量排序的方法是:先分块排序,后进行块合并。
外排序步骤
#include<iostream>
#include<iomanip>
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 && key[i][pos[i]] == MAX)
i++;
if (i == 5) //排序完成
break;
min = i;
data = key[min][pos[min]];
i++;
//找出当前参与排序的所有数中最小的
while (i < 5)
{
if (key[i][pos[i]] < data)
{
min = i;
data = key[min][pos[min]];
}
i++;
}
//打印当前最小者
cout << setw(4) << key[min][pos[min]];
pos[min]++;
}
cout << endl;
}
int main()
{
cout << "------多路归并的模拟---by David---" << endl;
cout << "原序列是" << endl;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5 && key[i][j] != MAX; j++)
cout << setw(4) << key[i][j];
cout << endl;
}
cout << "经过5路归并排序" << endl;
sort();
system("pause");
return 0;
}
标签:style blog http os 使用 io for 数据 ar
原文地址:http://blog.csdn.net/zhangxiangdavaid/article/details/38478617