摘要: 处理400G数据,用时的估算:1、读一遍:400G/.03G/60/60= 3.7小时。2、写一遍:400G/.01G/60/60= 11.11小时。其中.03、.01,分别是读、写硬盘的速度。验证法中,有将原始数据中已经读出的数据标特殊值的要求。标记方式有二:1、对取出的一亿数循环。用它们在原始数... 阅读全文
posted @ 2015-05-06 10:33 汇铁 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 数据继续增加,麻烦很多。下面给出一个方案:void shift(int data[], int i, int length) //筛选算法{ for(int c; c= i* 2+ 1, c 0; all-= size) //减去做好的 ... 阅读全文
posted @ 2015-04-29 14:23 汇铁 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 小结一下:对这个问题,到目前,我们得到了两段比较好的代码:堆选择与快速选择。堆选择,是我根据维基百科/堆排序/C++代码,改写得。快速选择,为ExcelHome的知名网友香川群子所写。她并指出,该代码去掉提前退出的条件,即为快速排序。即:void SortQuick(int data[], int ... 阅读全文
posted @ 2015-04-23 09:51 汇铁 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 快速选择这是一种快速将数据分成两组的方法。类似快速排序算法。在ExcelHome网站讨论一亿取十万这个问题时,得到该网站知名网友“香川群子”的VB代码。核心如下:Function QuickSort2(tr, l&, u&, k&) '递归算法的快速排序过程 不解释 Dim i&, j&, r... 阅读全文
posted @ 2015-04-20 22:39 汇铁 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 堆处理: void shift(int data[], int i, int length) { for(int c; c= i* 2+ 1, c= 0; i--) shift(data, i, n); ... 阅读全文
posted @ 2015-04-19 17:32 汇铁 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 单向链表用单向链表,还更麻烦。因为,插入时,必须修改插入点的前一节点的后续值。因此,做查找时,临时维护一个前趋。也不知道有没好处。代码如下://---------------------- //单向链struct SOut... 阅读全文
posted @ 2015-04-18 15:49 汇铁 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 双向链表来处理:双向链表,虽顺序比较,次数多。但插入不用移动数据。不知道这两者谁占上风。还是代码来运行一下吧。代码如下:#include #include using namespace std; struct SOutTwo{ int value, next, pre;}... 阅读全文
posted @ 2015-04-17 10:07 汇铁 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 准备对能一次读入内存中处理的数据,取前K小,用多种方法进行。设想有:插入排序、折半查找插入排序、链排序、堆排序。顺序查找直接插入:思路:1、对全部数据,依次取值。送到一个队列。2、待判断的数据,在队列中做顺序查找。找到位置则插入。3、当队列满,且待判断的数据大于队列中最大数据,则直接放弃。另,代码中... 阅读全文
posted @ 2015-04-15 21:01 汇铁 阅读(1328) 评论(0) 推荐(0) 编辑
摘要: 今天在知呼,看到一问:如何在很大数量级的数据中(比如1个亿)筛选出前10万个最大值?这是某人面试时,被问到的问题。我,试答如下:m取前n以取小为例吧。我喜欢小。以数据总量,分:小、中、大,三种情况来分析。1、小:全部读入内存,排序,取前n。2、中:2.1:分几次读入(次数为k=总数据/内存大小),分... 阅读全文
posted @ 2015-03-29 15:44 汇铁 阅读(712) 评论(0) 推荐(0) 编辑