标签: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