一.dp 动态规划的本质 是一种思想。通过对原问题划分成子问题,寻找子问题之间的联系,通过求解子问题得出原问题的解。与贪心不同的是,动归是深谋远虑,考虑全局最优解;而贪心则目光短浅,只考虑局部最优解。 子问题 对应 状态 子问题之间的联系 对应 状态转移 边界子问题 对应 边界状态(状态转移的边界) ...
分类:
其他好文 时间:
2018-02-25 20:36:24
阅读次数:
227
《算法导论》读书笔记之第7章 快速排序 本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn)。另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体 ...
分类:
编程语言 时间:
2018-02-25 14:32:29
阅读次数:
272
摘要: 本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较排 ...
分类:
编程语言 时间:
2018-02-23 16:00:03
阅读次数:
187
快速排序 对于n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n2)的排序算法,虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序中最好的选择,因为它的平均性能非常好:它的期望时间复杂度是O(nlgn),而且O(nlgn)中隐含的常数因子非常小。 1、快速排序的描述 快速排序算法采用 ...
分类:
编程语言 时间:
2018-02-23 15:59:39
阅读次数:
195
正文之前 快速排序(英语:Quicksort),又称划分交换排序(partition exchange sort),一种排序算法,最早由东尼 霍尔提出。在平均状况下,排序n个项目要 O ( n log n )次比较,在最坏情况下则需要 O ( n 2)次比较,但这种状况并不常见。事实上,快速排序通常 ...
分类:
编程语言 时间:
2018-02-23 10:55:47
阅读次数:
216
滋滋滋,好尴尬啊,原来MIKE的是单旋Splay的板子,今儿一早起来码宠物收养所,开开心心的码完了,一交,TT?what?看一眼数据,全是有序数据,可是我的是MIKE的Splay啊!突然脑子里蹦出一个概念,好像Splay还有单旋双旋之分,上网一搜还真是这样,单旋在最坏情况下会退化成一条链,双旋则可以 ...
分类:
其他好文 时间:
2018-02-21 22:16:36
阅读次数:
158
http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1894 题意: 有M个鹰蛋,N层楼,鹰蛋的硬度是E,也就是说在1~E层楼扔下去不会碎,E+1层楼扔下去会碎。 给定M,N,问最坏情况下至少几次能得到E的具体的值。(E可能为0) ①n<=100。 ② ...
分类:
其他好文 时间:
2018-02-19 15:18:12
阅读次数:
223
"(原址)" 三标准: 图结构占用的空间 确定图的一条 给定边界 花费的时间 从给定节点处 找到邻居 花费的时间 Edge List 以[v,w]为元素的列表,其中v,w为节点编号,每个元素表示一条边; 如果有权重,则元素形式为[v,w,k] 缺点:搜索某一特定边缘,必须进行遍历,最坏情况需要遍历完 ...
分类:
其他好文 时间:
2018-02-13 23:37:57
阅读次数:
283
什么是递归 简但来说递归的特点就是,能够自己调用自己,就像两块镜子相对而放,一个合格的递归应当拥有:一个入口,一个出口,即限制自己在自己的程序体中调用自己。 评价算法好坏的标准 两个概念:时间复杂度和空间复杂度(代码是否容易实现) 时间复杂度:用于体现算法执行时间的快慢,用O表示。一般常用的有:几次 ...
分类:
编程语言 时间:
2018-02-12 20:06:53
阅读次数:
207
注:为方便描述算法 便于记忆 所以代码用Pascal书写 见谅 RMQ,即Range Minimum/Maximum Query问题,给定一个区间,询问不同子区间的最值问题。 当询问次数较少时,朴素算法的时间尚可(暴力做法),k次询问,最坏情况是每次询问最大区间,时间复杂度O(kL),其中k表示询问 ...
分类:
其他好文 时间:
2018-02-05 20:00:25
阅读次数:
135