算法导论

算法导论10.顺序统计树与区间树习题

顺序统计树和区间树都是对红黑树的扩张:通过在节点添加字段完成其他的功能,如果该字段可以在 $O(1)$ 时间内维护,就能够不影响红黑树本身操作效率渐进量级。 顺序统计树 顺序统计树是红黑树的扩展:在红黑树的每个节点额外维护一个域size,记录以该节点为根的子树中的总结点个数。顺序统计数具有这样的功能:在 $O(\lg n)$ 时间内找到树中所有元素的第 $...

《算法导论》

序GitHub 见solution.txt 6.1 堆6.1-1 在高度为h的堆中,最多元素为2(h+1)−1个,最少元素有 2h+1 个 6.1-3 最大堆的特性是除了根结点外的每个结点都有A[PARENT(i)]>=A[i]故,在一个最大堆的某颗子树中最大元素必然位于该子树的根上。 6.1-4 根据最大堆的性质,任何子树的子结点都小于根节点,故...

算法导论13.贪心算法

与动态规划类似,贪心算法也将问题化简为规模较小的子问题,并通过递归解决子问题来获取整个问题的解。不同的是,贪心问题不对子问题进行比较,而是只生成一个非空的子问题,而使选择在当时看上去是最优的(即“贪心”的含义)。 活动选择问题 几个互相竞争的活动都要求以独占的方式占用某个公用资源(如选修课程对个人可支配时间的要求,或会议对会议室的要求),每个活动都有开始时...

麻省理工公开课《算法导论》学习笔记:第一讲

主题:简介课程,渐近概念的大局观,插入排序和归并排序,递归式函数时间分析(递归树方法) 教材:《算法导论》 收获:很感动地看到算法分析那个log(n)是为什么出现了,更深层还要听第二讲,若不是因为要准备SAS,恨不得马上看。 内容: 1 何为算法分析? 计算机程序运行性能和存储空间的理论分析,叫算法分析。也就是关注2点:1 性能,就是程序跑得快不快; 2...

算法导论(一):渐进记号

算法导论(一):渐进记号 算法中,常用极限情况度量一个函数的好坏,因此引入了渐进函数的概念。在渐进函数中,有以下五种渐进记号:Ο、Θ、Ω、ο、ω。   假设有函数f(n)与函数g(n),如果令函数f(n)为实数a,函数g(n)为实数b,则有以下类比:   f(n)=Ο(g(n))  类似于  a≤b   f(n)=Ω(g(n))  类似于  a≥b   f...

算法导论 第十三章 红黑树(python)-1插入

红黑树是上一章二叉搜索树的改进,实现一种平衡 ,保证不会出现二叉树变链表的情况,基本动态集合操作的时间复杂度为O(lgn) 实际用途:c++stl中的set,map是用他实现的 红黑树的性质: 1.每个结点或是红色的,或是黑色的 2.跟结点是黑色的 3.每个叶结点(NIL)是黑色 4.如果一个结点是红色的,则它的两个结点都是黑色的 5.对每个结点,从该结点...

算法导论:Trie字典树

1、 概述  Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。  Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。  Trie树可以利用字符串的公共前缀来节约存储空间。如下图所示,该trie树用10个节点保存了...