归并排序
在提高排序算法性能的方法中,有一类叫做分而治之。我们先研究其中第一种叫做归并排序。归并排序使用递归的方法,不停地把列表一分为二。如果列表是空或只有一个元素,那么就是排好序的(递归基点),如果列表有超过1个的元素,那么切分列表并对两个子列表递归使用归并排序。一旦这两个列表排序完成,称为“归并”的基本操作开始执行。归并是把两个有序列表合并成一个新的有序列表的过程。图10是我们熟悉的列表...
分类:
编程语言 时间:
2014-05-01 22:18:22
阅读次数:
391
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作...
分类:
编程语言 时间:
2014-05-01 22:02:12
阅读次数:
360
主定理
主定理最早出现在《算法导论》中,提供了分治方法带来的递归表达式的渐近复杂度分析。
规模为n的问题通过分治,得到a个规模为n/b的问题,每次递归带来的额外计算为c(n^d)
T(n) <= aT(n/b)+c(n^d)
那么就可以得到问题的复杂度为:...
分类:
其他好文 时间:
2014-04-30 22:44:38
阅读次数:
435
默认的merge policy。
findMerges:
先将所有段按照扣除删除文档之后的字节数(bytesize * (1.0 - delRatio))降序排,对其中size() > 2.5G(maxMergedSegmentSize / 2)的段排除在外,其他只要不是正在归并的段,加入候选。
这个候选的列表如果大于allowedSegCount(allowedSegCount计算方法如下...
分类:
其他好文 时间:
2014-04-30 22:28:39
阅读次数:
288
题目: You are given two linked lists representing two
non-negative numbers. The digits are stored in reverse order and each of their
nodes contain a sin...
分类:
其他好文 时间:
2014-04-30 18:44:23
阅读次数:
428
原题地址:http://oj.leetcode.com/problems/sort-list/题意:链表的排序。要求:时间复杂度O(nlogn),空间复杂度O(1)。解题思路:由于题目对时间复杂度和空间复杂度要求比较高,所以查看了各种解法,最好的解法就是归并排序,由于链表在归并操作时并不需要像数组的...
分类:
编程语言 时间:
2014-04-30 15:09:41
阅读次数:
428
#includeusing namespace std;#define MAX 10000int
array[MAX]; //待排序数组const int MAXN=0x7fffffff;void Merge(int array[],int start,
int mid, int end) { .....
分类:
其他好文 时间:
2014-04-27 22:18:38
阅读次数:
484