摘要: 一、渐进时间复杂度 基本操作的数量往往可以写成关于“输入规模”的表达式,保留最大项并忽略系数后的简单表达式称为算法的渐进复杂度,用于衡量基本操作数随规模的增长情况。 例如:设输入规模为n时加法操作的次数为T(n),T(n) = n(n+1)(n+2)/6。 当n很大时,平方项和一次项对整个多项式的影 阅读全文
posted @ 2017-10-16 05:30 哲贤 阅读(865) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-10-15 14:59 哲贤 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 一、算法分析初步 详见这里 1、渐进时间复杂度 2、上界 3、分治 4、正确对待算法分析结果 二、再谈排序与检索 1、归并排序 2、快速排序 3、二分查找 三、递归与分治 四、贪心 1、背包 2、区间 3、huffman编码 五、算法设计方法 1、构造法 2、中途相遇法 3、问题分解 4、等价转换 阅读全文
posted @ 2017-10-15 07:39 哲贤 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 给定一个集合(没有重复元素),输出所有子集。 首先考虑1~n的所有子集: 为了不出现{1,2}和{2,1}的情况,采用定序的方法。想象一棵解答树,子节点的元素一定比父节点大。因为定序,解答树叶子结点的深度不同。 解答树上的每一个结点有个值,从根节点到叶子结点路径上的结点值为一个 阅读全文
posted @ 2017-10-14 22:36 哲贤 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 1、生成1~n的所有排列,例如(输入n): 代码在底部,思路可参考http://www.cnblogs.com/mu-ye/p/7650871.html 2、生成1~n中元素的排列,排列元素可重复(输入n): 3、P[]中有重复的元素(输入n和P[]):(注意区别于把1、2中的 阅读全文
posted @ 2017-10-14 14:45 哲贤 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 输出1~n的所有排列 最直接的想法是,n层循环输出所有排列。 n层循环用递归的原因:n层循环是个嵌套的结构,嵌套的层数是个变量,手动写嵌套不知道写几层,而一想到嵌套肯定是调用函数(这句可能是敲代码的感觉),函数不断调用函数就是递归了。(自己的想法) 其实,嵌套的n层循环像一棵树 阅读全文
posted @ 2017-10-11 15:33 哲贤 阅读(1409) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 和普通排序不同的是,拓扑排序不知道元素的具体大小,只有元素间的部分关系,最后的结果是把这些元素串起来。(拓扑排序是图论中的一个问题:把一个图的所有结点排序,使得每一条有向边(u,v)对应的u都排在v的前面) 首先,我们知道,拓扑排序最终要确定一个序列,那么向这个序列放一个元素时 阅读全文
posted @ 2017-10-10 21:03 哲贤 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 从图中的每个结点开始搜,一种连通块一个id号。实际上,一个连通块被其中的一个结点搜过,连通块内的其他结点就不能再搜。 第一次写时,忘记写自己走过的点不能再走的条件了。 阅读全文
posted @ 2017-10-10 09:27 哲贤 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 一、表示方法、基本结构 大致有2种表示图的方法: 1、给定一个矩阵,上面一些符号,这个图就是这个样子。例如: 2、给出路径。例如: ●1 2、2 3、4 3、3 5(1到2有路径) ●01000 00100 00001 00100 00000(意义同上) 二、基本算法(dfs、 阅读全文
posted @ 2017-10-10 09:15 哲贤 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 原创、转载请注明出处 二叉树特点 对于完全二叉树,第n层结点的结点个数是2的n次方个,对于第k个结点,它的左子节点是2k,右子节点是2k+1。 前序遍历 中序遍历: 后序遍历: 一、结构 二叉树有2类表示方法:链式和数组模拟。 其中数组模拟有2种:1.一个数组,数组下标代表完全二叉树的编号,对于普通 阅读全文
posted @ 2017-10-09 18:06 哲贤 阅读(277) 评论(0) 推荐(0) 编辑