11 2018 档案
摘要:逆序对inversion 在正序排序算法里,对输入序列中的任一对元素i、j,如果排序靠前的元素i小于靠后的元素j,那么元素i、j组成一个正序对,否则组成一个逆序对(inversion)。 自然,当我们把输入序列中这些inversions都消除了,排序就完成了。 交换相邻的元素是消除inversion
阅读全文
摘要:什么是对象? An object is "something in memory". 什么是左值,什么是右值? An lvalue expression identifies a non temporary object. An rvalue expression identifies a temp
阅读全文
摘要:二叉搜索树insert remove search操作的时间复杂度均为O(h),为了降低h,加快执行速度,我们希望二叉树可以保持矮胖、茂盛的形状。于是出现了平衡树的概念。AVL是其中比较严格的一种。它为每个节点维护一个height属性,限制每个节点的左右孩子两个节点的height之差不得大于1(或者
阅读全文
摘要:前三题考察对红黑树5条性质的理解,比较简单。4 7题很有启发性。 13.1 4 可以把从树根到叶子的路径想象成一根枝条,按照红黑树属性5的要求,当完全收缩时,每根枝条上黑色节点数目是相同的,当完全伸展开时,会从两个黑色节点之间抽出一个红色节点。 这种设计的妙处是,对同一个根下的两根枝条a,b(a长于
阅读全文
摘要:动态规划(dynamic programming),是一种解决问题的方法,它的思路是将大问题分解为子问题,然后合并子问题的解。与分治法将问题分解为彼此独立的子问题不同,动态规划应用于子问题相互重叠的情况。为了避免这些重叠部分(即子子问题)被重复计算,动态规划算法对每个子子问题只计算一次,并记录在一个
阅读全文
摘要:12.3 1 二叉搜索树insert操作的递归版本 ~~~ void insert1(Node pRoot, Node pAdd) { bool bLeft = pAdd key key; Node pNextRoot = bLeft ? pRoot left : pRoot right; if(p
阅读全文