随笔分类 - 海量数据处理
摘要:参考July博文:程序员编程艺术:第十章、如何给10^7个数据量的磁盘文件排序,感谢July。 给10^7个无重复的整数排序请看另一篇博文:10^7个无重复的整数排序 对于给10^7个有重复的整数排序,我们不能用位图法来做,位图法只适用于无重复的数字,那么假设我们没有足够的内存去存储这1千万个整数,我们该如何去排序呢?还是分治法,把大化为小。比如:我们可以把这1千万个整数化为10份,用10个文件存储,分别为data1.txt到data10.txt,并且我们的内存足够存储每一份数据,即每一个dataX.txt,这样,我们就可以依次对这10个文件读取进内存,并利用内部排序,如快速排序,对每...
阅读全文
摘要:题目:给10^7个无重复的整数排序,即1到10000000,尽量使空间复杂度小。答:首先,我们利用程序来随机生成这10^7个整数,用一个全局数组存储着10^7个整数,然后根据随机生成的下标交换其中两个整数的位置,以达到我们所说的整数是随机的,具体请看下面的代码:const int N = 10000000;int data[N] = {0};void swap(int &a, int &b){ int temp = a; a = b; b = temp;}void generate_no_repeat_number(void){ FILE *fp = fopen("u
阅读全文
浙公网安备 33010602011771号