04 2015 档案
摘要:数据继续增加,麻烦很多。下面给出一个方案:void shift(int data[], int i, int length) //筛选算法{ for(int c; c= i* 2+ 1, c 0; all-= size) //减去做好的 ...
阅读全文
摘要:小结一下:对这个问题,到目前,我们得到了两段比较好的代码:堆选择与快速选择。堆选择,是我根据维基百科/堆排序/C++代码,改写得。快速选择,为ExcelHome的知名网友香川群子所写。她并指出,该代码去掉提前退出的条件,即为快速排序。即:void SortQuick(int data[], int ...
阅读全文
摘要:快速选择这是一种快速将数据分成两组的方法。类似快速排序算法。在ExcelHome网站讨论一亿取十万这个问题时,得到该网站知名网友“香川群子”的VB代码。核心如下:Function QuickSort2(tr, l&, u&, k&) '递归算法的快速排序过程 不解释 Dim i&, j&, r...
阅读全文
摘要:堆处理: void shift(int data[], int i, int length) { for(int c; c= i* 2+ 1, c= 0; i--) shift(data, i, n); ...
阅读全文
摘要:单向链表用单向链表,还更麻烦。因为,插入时,必须修改插入点的前一节点的后续值。因此,做查找时,临时维护一个前趋。也不知道有没好处。代码如下://---------------------- //单向链struct SOut...
阅读全文
摘要:双向链表来处理:双向链表,虽顺序比较,次数多。但插入不用移动数据。不知道这两者谁占上风。还是代码来运行一下吧。代码如下:#include #include using namespace std; struct SOutTwo{ int value, next, pre;}...
阅读全文
摘要:准备对能一次读入内存中处理的数据,取前K小,用多种方法进行。设想有:插入排序、折半查找插入排序、链排序、堆排序。顺序查找直接插入:思路:1、对全部数据,依次取值。送到一个队列。2、待判断的数据,在队列中做顺序查找。找到位置则插入。3、当队列满,且待判断的数据大于队列中最大数据,则直接放弃。另,代码中...
阅读全文
浙公网安备 33010602011771号