快速排序法作为一种分治法的算法,和归并排序法的差别在于,前者是先比较,后拆分,而后者是先拆分,在合并的过程中进行比较。快速排序法在原理上简单总结就是:切分:拿数组第一个数(也可以是随机任意一个)作为中心点(pivot);扫描其它所有数,将小于这个中心点的数归类到左边,大于中心点的归类到右边;将左边(...
分类:
其他好文 时间:
2014-08-10 15:22:30
阅读次数:
208
首先,归并排序,分治,递归解决小的范围,再合并两个有序的小范围数组,便得到整个有序的数组。
这是很适合用递归来写的,至于非递归,便是从小到大,各个击破,从而使得整个数组有序。代码如下:
void merge(vector &A, int left, int mid, int right)
{
int i=left,j=mid+1;
vector tmp(right-left+1,0);...
分类:
其他好文 时间:
2014-08-10 13:08:00
阅读次数:
235
题目链接SegmentsTime Limit:4000/2000MS (Java/Others)Memory Limit:20000/10000KB (Java/Others)Problem Description由3钟类型操作:1)D L R(1 File Name: 1157.cpp 3 ...
分类:
其他好文 时间:
2014-08-10 12:40:40
阅读次数:
298
题目链接:http://acdream.info/problem?pid=1157Problem Description由3钟类型操作:1)D L R(1 2 #include 3 #include 4 #include 5 using namespace std; 6 7 c...
分类:
其他好文 时间:
2014-08-09 23:11:59
阅读次数:
337
《算法之道》精华 算法设计部分
本书作者绉恒明,作者另有一本书《数据结构之弦》,以及《操作系统之哲学原理》都是很好的书这本书可以算得上是深入浅出,文笔很好,作者添加了很多自己的思考本文仅包括算法设计部分,算法分析略去,并没有严格按照章节顺序来记录
附录 算法随想
有人喜欢遍历,希望踏遍千山万水,人生丰富多彩;有人一生贪婪,眼界不宽,及时行乐;有人注定穷搜,辛辛苦苦,收获有限;有人善用...
分类:
其他好文 时间:
2014-08-09 11:37:07
阅读次数:
280
归并排序法是一个基于分治法的比较排序方法,其最差情况复杂度为O(nlogn),而快速排序法的复杂度在最差情况下达到O(n2)本文使用PHP来讨论其算法过程:假设对乱序数列进行排序 $input = array(11,5,1,4,8,7,9,2);思路可以表示:(图是PPT画的,比较简单,请看官见谅)...
分类:
其他好文 时间:
2014-08-09 11:20:37
阅读次数:
398
题意:给你n条1个宽度ai长度的木条,有一个刷子可以一次刷宽度为1长度无限,问你用最少的次数把所有木条都刷满。思路:我们可以用分治的思想来做,首先找到n条木条最短的木条i,然后减去它的值,再查找,1到i-1,和i+1到n的最小值,由于可以竖着刷,因此要比较刷完这段区间的横着刷和竖着刷的最小值。最终即...
分类:
其他好文 时间:
2014-08-09 11:12:28
阅读次数:
240
74.数组中超过出现次数超过一半的数字(数组)题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。思路:分治算法 两两一对 相同留下一个 不同扔掉 多出来的数字单独对比/*74.数组中超过出现次数超过一半的数字(数组)题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字...
分类:
其他好文 时间:
2014-08-08 15:16:26
阅读次数:
231
树的直径树的直径(Diameter)是指树上的最长简单路。直径的求法:两遍搜索 (BFS or DFS)任选一点w为起点,对树进行搜索,找出离w最远的点u。以u为起点,再进行搜索,找出离u最远的点v。则u到v的路径长度即为树的直径。简单证明:如果w在直径上,那么u一定是直径的一个端点。反证:若u不是...
分类:
其他好文 时间:
2014-08-08 15:14:46
阅读次数:
373
poj 1655:http://poj.org/problem?id=1655题意: 给无根树, 找出以一节点为根, 使节点最多的树,节点最少。题解:一道树形dp,先dfs 标记 所有节点的子树的节点数。 再dfs 找出以某节点为根的最大子树,节点最少。 复杂度(n)/***Good Luck***...
分类:
其他好文 时间:
2014-08-08 12:25:25
阅读次数:
246