![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
cqcpp
这个作者很懒,什么都没留下…
展开
-
算法导论 13章 红黑树
红黑树的性质1,每个节点非黑即红。 2,根节点是黑色的。 3,叶节点(NIL)是黑色的。 4,红节点的两个孩子都是黑色的。 5,对每个节点,从该节点到其所有后代的简单路径上,均包含了同样数目的黑节点。 旋转为了维持红黑树的性质,要改变某些节点的颜色和指针结构,旋转改变了指针结构。左旋:以x和y之间的链为“支轴”进行的,使得x的右孩子为y的左孩子,y的父节点为x的父节点,y的左孩子为x。 代码: te原创 2015-05-08 21:52:33 · 407 阅读 · 0 评论 -
算法导论 15章 动态规划
动态规划与分治法区别:动态规划应用于子问题重叠的情况(子问题是递归求解的),分治法会反复求解公共子问题,动态规划将子问题的解保存到表格中,无需重新计算。 动态规划应用领域: 动态规划方法通常用来求解最优化问题。这类问题可以有很多可行解,每个解都有一个值,我们希望寻找具有最优值(最小值或最大值)的解。我们称呼这样的解为问题的一个最优解,而不是最优解,因为可能有多个解都达到最优值。 动态规划的步骤: 刻原创 2015-05-12 20:29:35 · 495 阅读 · 0 评论 -
算法导论 14章 数据结构的扩张
本章介绍了两种红黑树的扩张一,动态顺序统计秩:在集合线性序中的位置,中序遍历树时输出的位置。顺序统计树:向红黑树的结构中添加一个size域,表示包含自身节点的当前节点的子树节点的数目。(1)查找给定秩的元素OS_SELECT(x,i) r = size[left[x]]+1; //先计算x的处于的位置 if i = r //x正好是第i小的关键字原创 2015-05-12 21:12:19 · 382 阅读 · 0 评论 -
算法导论 11章 散列表
散列表是实现字典操作的一种有效数据结构散列表是普通数组概念的推广散列表使用一个长度与实际存储的关键字数目成比例的数组来存储,根据关键字计算相应的下标。直接寻址表缺点:(1)如果U很大,要保存|U|大小的一张表T有点不实际。 (2)实际存储的关键字集合K相对U来说可能很小,因而分配给T的大部分空间都要浪费掉。 散列表利用散列函数K计算出槽的位置。冲突:两个关键字可能映射到同一个槽中。冲突解决方法:原创 2015-05-13 08:38:24 · 623 阅读 · 0 评论 -
算法导论 16章 贪心算法
贪心算法:每一步都作出当时看起来最佳的解活动选择问题贪心算法原理贪心算法性质 最优子结构 贪心对动态规划 0-1背包问题 分数背包问题赫夫曼编码拟阵和贪心算法原创 2015-05-13 08:44:04 · 624 阅读 · 0 评论 -
算法导论 14章 数据结构的扩张
1、动态顺序统计 顺序统计树:向红黑树的结构中添加一个size域,表示包含自身节点的当前节点的子树节点的数目。修改后可以快速支持顺序统计量操作。 1)检索具有给定排序的元素 过程OS_SELECT(x,i)返回一个指向以x为根的子树中包含第小关键字的结点的指针,即为了找出顺序统计量树T中的第i小关键字。 OS_SELECT(x,i) r = size[left[原创 2015-05-13 08:51:23 · 417 阅读 · 0 评论 -
STL源码剖析 第三章
iterators模式定义: 提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴漏该聚合物的内部表述方式。3.1 迭代器设计思维——STL关键所在STL中心思想:将数据容器和算法分开,彼此独立设计,最后再以已贴粘着剂将他们撮合在一起3.2 迭代器是一种smart pointer迭代器是一种行为类似指针的对象,指针的最常见最重要的是内容提领(取出指标所指物体的内容)和原创 2015-05-14 23:01:55 · 460 阅读 · 0 评论 -
算法导论 12章 二叉搜索树
最坏运行时间 完全二叉树 O_( lgn) 线性链 O_(n) 随机构造 O( lgn) 平均时间O_(lgn) 二叉搜索树性质 左子树小于双亲,右子树大于双亲 二叉搜索树的基本操作所花费的时间与这棵树的高度成正比。 遍历 中序遍历 O_(n) 子树根在左右之间 伪代码: INORDER-TREE-WALK(x) if x!=NI原创 2015-05-06 08:54:05 · 236 阅读 · 0 评论