![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论学习
riyueming184
这个作者很懒,什么都没留下…
展开
-
算法导论 第三章 函数的增长
第三章 函数的增长 算法渐进符号 Θ :给出上界和下界 f(n) =Θ(g(n)) è c1g(n) ≤ f(n) ≤ c2g(n) О:给出上界 f(n) =О(g(n)) è f(n) ≤ cg(n) Ω:给出下界f(n) =Ω(g(n)) è f(n) ≥ cg(n) ο:给出非渐进紧界的上界 f(n) =ο(g(n)) è 0 ≤ f(n) ≤ cg(h) 其中c任意 ω原创 2011-12-10 13:00:37 · 637 阅读 · 1 评论 -
算法导论 第十六章 贪心算法
第十六章 贪心算法 根据动态规划而产生的贪心算法: 1. 决定问题的最优子结构。 2. 设计出一个最优解。 3. 证明在递归任一阶段,最优选择之一总是贪心选择。 4. 证明通过做贪心选择,所有子问题(除了一个)都为空。 5. 设计出一个实现贪心策略的递归解。 6. 转换为迭代解。 简化的贪心算法: 1. 将优化问题转化为这样原创 2011-12-22 17:27:27 · 287 阅读 · 0 评论 -
算法导论 第十五章 动态规划
第十五章 动态规划 动态规划一般步骤: 1. 描述最优解的结构。 2. 递归定义最优解的值。 3. 按自底向上的方式计算最优解。 4. 由计算结果构造一个最优解。 动态规划的基本要素:最优子结构和重叠子问题。 1. 最优子结构要求最优子问题具有独立性。 2. 用来解原问题的递归算法可反复用来解同样的子问题。 3. 重新构造最原创 2011-12-22 10:05:44 · 180 阅读 · 0 评论 -
算法导论 第十章 基本数据结构
第十章 基本数据结构 以前写的栈类: .h文件 /******************************************************************** created: 2011/03/25 created: 25:3:2011 15:38 filename: Stack.h file base: Stack file ext:原创 2011-12-13 16:12:36 · 194 阅读 · 0 评论 -
算法导论 第八章 线性时间排序
第八章 线性时间排序 本章介绍了3种在线性时间内进行排序的算法,然而这几种算法存在诸多限制 1.计数排序 计数排序算法基于以下假设:输入的每一个元素都是介于0到k之间;k的值是n的线性函数;空间效率低下; template void CountSort(T* a,int n,int k) { int* c = new int[k + 1]; T* b = new T[n原创 2011-12-12 22:12:43 · 153 阅读 · 0 评论 -
算法导论 第六章 堆排序
第六章 堆排序 template void MaxHeapify(T* a,int i,int n) { int l,r,largest; if (i >= n/2) { return; } for (int j = i; j < n/2;) { l = 2*j + 1; r = 2*j + 2; if (l a[j]) {原创 2011-12-12 16:56:45 · 152 阅读 · 0 评论 -
算法导论 第七章 快速排序
第七章 快速排序 template int Partition(T* a,int p,int r) { T x = a[r]; int i = p; for (int j = p; j < r; ++j) { if (a[j] <= x) { swap(a[i],a[j]); i++; } } swap(a[i],a[r]);原创 2011-12-12 17:47:05 · 165 阅读 · 0 评论 -
算法导论 第十一章 散列表
第十一章 散列表 散列表 链接法散列表:具有良好的平均性能。n为元素,m个槽位,以a = n/m为装载因子(一个槽位中平均元素个数)。 散列函数的选择: 除法散列:以质数为除数 乘法散列:m*(k*A mod 1) 全域散列:是指随机的选择来自于一组能够使得碰撞几率为1/m的散列函数组的散列函数。 开放寻址(线性开型寻址):线性探查、二次探查、双重散列原创 2011-12-13 19:22:15 · 235 阅读 · 0 评论 -
算法导论 第九章 中位数和顺位统计学
第九章 中位数和顺序统计学 1.最大最小值: template pair MinMax(T* a,int n) { T _min,_max; if (n <= 0) { return make_pair(_min,_max); } if (n%2) { _min = _max = a[0]; }else { if (a[0] < a[1]原创 2011-12-13 13:24:48 · 199 阅读 · 0 评论 -
第二章 算法入门
第二章 算法入门 用C++实现本章节及习题的一些算法 /************************************************************************/ /*插入排序; /************************************************************************/ template原创 2011-12-09 19:22:25 · 179 阅读 · 0 评论 -
算法导论 第四章 递归式
第四章 递归式 代换法解递归式:先估计一个解,并将此解代入递归式,解不等式,在此过程中可以忽略边界条件,变量代换等。 递归树方法:运用递归树给每一层计算代价,然后求和。用递归树方法得出好的猜测,再用代换法解递归式是一个很好的解递归式的方法。 主方法解递归式:主方法解递归式主要基于递归树及代换法的经验,并尤严格的证明。Logba与f(n)比较多项式阶的大小起决定因素。原创 2011-12-11 13:09:00 · 292 阅读 · 0 评论 -
算法导论 第二十二章 图基本算法
第二十二章 图的基本算法 图的表示:邻接表与邻接矩阵。 广度优先搜素: 1. 将每一个顶点分为三种颜色:白色、灰色、黑色。其中白色表示未被探索到,黑色表示已经探索完成,灰色表示等待探索的顶点。 2. 灰色顶点存于一个队列中等待探索,直到队列为空。 3. 保存节点以形成最短路径。 深度优先搜索: 1. 将每一个顶点分为三种颜色:白色、灰色、黑色。其中白色原创 2011-12-25 09:10:51 · 193 阅读 · 0 评论