程式描述:
(1)海量資料,記憶體不足,需要將檔案分割成多個檔案,從磁碟讀入;
(2)將每個小檔案排好序;
(3)歸併每個排好序的檔案,合成乙個檔案。
#include #include //qsort
#include #include #include using namespace std;
int sort_num = 10000000; //10m
int memory_size = 250000; //250k
//每次只對250k個小資料量進行排序
int read_data(file *fp, int *space)
void write_data(file *fp, int *space, int num)
} } // check the file pointer whether valid or not.
void check_fp(file *fp)
} // void*型別
int compare(const void *first_num, const void *second_num)
string new_file_name(int n)
//內排序
int memory_sort()
} //int k; //記錄下最小值位置
//在陣列中找出最小值
for (i = 0; i < file_num; i++)
}
//cout<<" k = "<
大資料排序問題
問題1 從100億個資料中找出前100個資料 分析 由於只要找出前100個資料,可以採用堆來進行處理。堆特別適合的場景是從海量資料中找出前m個最大值或最小值,當m不大的時候效率很高。步驟 1.讀取前100個資料,建立最小堆 最小堆的作用是方便找出目前最大的100個資料中的最小值,把待比較的資料與這個...
大資料的排序問題
楔子 問題 假設乙個檔案中有9億條不重複的9位整數,現在要求對這個檔案進行排序。一般解題思路 1 將資料匯入到記憶體中 2 將資料進行排序 比如插入排序 快速排序 3 將排序好的資料存入檔案 難題 乙個整數為4個位元組即使使用陣列也需要900,000,000 4byte 3.4g記憶體對於32位系統...
大資料排序
大資料開發工程師的一道經典面試題 如果待排序資料具有某些特點,往往能夠有更加有效的方法解決。同時,這種思想也更加貼近大資料應用的思維方式。對於大資料問題,分而治之的思想十分普遍。同時分布式計算 平行計算等也都類似。包括hadoop採用的map reduce模型,分而治之的思想都貫穿其中。以時間為基準...