大資料排序問題

2021-06-26 00:31:38 字數 798 閱讀 4082

程式描述:

(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模型,分而治之的思想都貫穿其中。以時間為基準...