中科大软件学院算法复习概念综合题
中科大算法导论第一二次和第四次作业答案PPT学习教案

取c 1/ 3,n 2时,有T (n) cn lg n,T (n) (n lg n)
所以T (n) (n lg n). 第5页/共18页
4.1-4证明合并排序算法的“准确”递归式(4.2)的解为
Θ(nlgn)
(1)
如果n 1
T (n) T (n / 2) T (n / 2) (n) 如果n 1
c(n
/
2)
lg(
n
/
2)
c(n/2)Fra biblioteklg(
n
/
2)
(n)
c
n 2
lg(
n 2
)
c
n
1 2
lg(
n
2
1)
(n)
c n lg( n) c n 1lg( n 1) (n) cn lg n 22 2 2
c n lg( n) c n 1lg( n 1) (n) cn lg n 0 22 2 2
14.
i++
15.
else do A[k]=R[j]
16.
j++
17.
k++
18. while(i<=n1) 19. do A[k++]=L[i++]
20. while(j<=n2)
21. do A[k++]=R[j++]
第1页/共18页
第二次作业
3.2-3 证明等式lg(n!)=Θ(nlgn)。并证明等式n!=ω(2n)和
2
2
cn lg n 1 (1 c)n c lg( n 1) c 0 n
lg( n 1) lg(1 1)是递增函数,取n 2,则lg(n 1) 1
中科大算法导论期末试卷及答案

解:存在������1(n) + ������2(������) = ������(max(������1(������), ������2(������) 证明: ������1(������) = ������(������1(n)) 则存在 a1>0,a2>0, n1>0 使得 n>n1 时有 ������1 ∗ ������1(n) < ������1(������) < ������2 ∗ ������1(n) ������2(������) = ������(������2(n)) 则存在 b1>0,b2>0, n2>0 使得 n>n2 时有 ������1 ∗ ������2(n) < ������2(������) < ������2 ∗ ������2(n) 取 c1=min(a1,b1) >0, c2=2*max(a2,b2) >0, n0=max(n1,n2)>0 当 n>n0 时,有 ������1(n) + ������2(������) > ������1 ∗ ������1(n) + ������1 ∗ ������2(n)
= ������2(������������ − 5 ������������������������) − 2������ > 2������3 − 2������ > 2������0(������02 − 1) =12 即当 c=7, n0=2 时,对 n>n0, 5������2������������������������ + 2������ < ������������3恒成立, 5������2������������������������ + 2������ = ������(������3)
2022年中国科学技术大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年中国科学技术大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、下列说法不正确的是()。
A.图的遍历是从给定的源点出发每个顶点仅被访问一次B.遍历的基本方法有两种:深度遍历和广度遍历C.图的深度遍历不适用于有向图D.图的深度遍历是一个递归过程2、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储, a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.403、以下与数据的存储结构无关的术语是()。
A.循环队列B.链表C.哈希表D.栈4、下面关于串的叙述中,不正确的是()。
A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储5、已知串S='aaab',其next数组值为()。
A.0123B.1123C.1231D.12116、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ7、已知关键字序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后的小根堆是()。
A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,198、一个具有1025个结点的二叉树的高h为()。
A.11B.10C.11至1025之间D.10至1024之间9、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
n个结点的正则二叉树中有()个叶子。
A.log2nB.(n-1)/2C.log2n+1D.(n+1)/210、下面关于B和B+树的叙述中,不正确的是()A.B树和B+树都是平衡的多叉树B.B树和B+树都可用于文件的索引结构C.B树和B+树都能有效地支持顺序检索D.B树和B+树都能有效地支持随机检索二、填空题11、以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。
2007年中国科学院研究生院计算机软件基础考研试题

中国科学院研究生院2007年招收攻读硕士学位研究生入学统一考试试题科目名称:计算机软件基础 考生须知:1.本试卷满分为150分,全部考试时间总计180分钟。
2.所有答案必须写在答题纸上,写在试题纸上或草稿纸上一律无效。
数据结构部分(共70分)一、选择题(共10分,每题1分)1、对于顺序存储的线性表,访问结点和增加结点的时间复杂度为( )A .O(n) O(n)B .O(n) O(1)C .O(1) O(n)D .O(1) O(1)2、对于一个头指针为head 的带头结点的单链表,判断该表为空的条件是( )。
A .head=NULLB .head Ænext=NULLC .head Ænext=headD .head!=NULL3、在双向链表中删除指针p 所指的结点时需要修改指针( )。
A .p Ællink Ærlink=p Ærlink ; p Ærlink Ællink=p ÆllinkB .p Ællink=p Ællink Ællink ; p Ællink Ærlink=pC .p Ærlink Ællink=p ;p Ærlink=p Ærlink ÆrlinkD .p Ærlink=p Ællink Ællink ;p Ællink=p Ærlink Ærlink4、若一个栈的输入序列为1、2、3、…、n ,输出序列的第一个元素为i ,则第j 个输出元素为( )。
A .i-j-1B .i-jC .j-i+1D .不确定5、若度为m 的哈夫曼树中,其叶结点个数为n ,则非叶结点的个数为( )。
A .n-1B ./1n m −⎢⎥⎣⎦C .D .(1)/(1)n m −−⎢⎣⎥⎦/(1)1n m −−⎢⎥⎣⎦6、一棵二叉树的前序遍历序列为ABCDEFG ,它的中序遍历序列可能是( )。
中科大软件学院算法复习概念综合题

一、概念题:(1)排序算法时间复杂度:排序算法最好最坏平均插入O(n)O(n2)O(n2)归并O(nlogn)O(nlogn)O(nlogn)快排O(nlogn)O(n2)O(nlogn)排序算法空间复杂度:1、所有简单排序和堆排序都是0(1)2、快速排序为0(logn),要为递归程序执行过程栈所需的辅助空间3、归并排序和基数排序所需辅助空间最多,为O(n)(2)渐近记号1、渐近确界:Θ(g(n))={f(n):存在正常数c1和c2和n0,使对所有的n>= n0,都有0<=c1g(n)<=f(n)<=c2g(n)}。
大Θ记号给出函数的渐进确界。
2、渐近下界:Ω(g(n))={f(n):存在正常数c和n0,使对所有的n>=n0,都有0<=cg(n)<=f(n)}。
大Ω记号给出函数的渐进下界。
3、渐近上界:O(g(n))={f(n):存在正常数c和n0,使对所有的n>=n0,都有0<=f(n)<=cg(n)}。
大O记号给出函数的渐进上界。
(3)二叉查找树:执行基本操作的时间与树的高度成正比。
搜索、插入、删除的复杂度等于树高,期望O(lgn),最坏O(n)(数列有序,树退化成线性表)(4)红黑树:1、时间复杂度:基本动态集合操作:O(log n),n是树中元素的数目。
2、性质:1)节点是红色或黑色。
2)根节点是黑色。
3)每个叶节点(NIL节点)是黑色的。
4)如果一个结点是红的,则它的两个儿子都是黑的(不能有两个连续红结点)5)从任一节点到其子孙结点的所有路径都包含相同数目的黑色节点。
3、相关概念,定理:1)黑高度:从某个结点出发(不包括该结点)到达一个叶结点的任意一条路径上,黑色结点的个数称为该结点x的黑高度,bh(x)。
红黑树的黑高度定义为其根节点的黑高度。
2)一颗有n个内结点的红黑树的高度至多为2lg(n+1)。
(用2-3-4树理解)3)在一颗黑高度为K的红黑树中,总结点数最多有22k+1-1,此时内结点最多为22k-1(满二叉树,红黑交替),内结点最少有2k-14)RB-INSERT-FIXUP操作所作的旋转不超过两次,RB-DELETE-FIXUP所作的操作至多三次旋转(5)动态规划:1、装配线调度:FASTEST-WAY时间复杂度O(n)2、矩阵链乘法:MATRIX-CHAIN-ORDER时间复杂度O(n3)3、最长公共子序列:LCS-LENGTH时间复杂度为O(mn),m、n为序列的长度4、最优二叉查找树:OPTIMAL-BST时间复杂度为O(n3)(6)贪心算法:1、活动选择问题:初试时活动已按结束时间排序,O(n),否则可在O(nlgn)内排序2、哈夫曼编码:Q用最小二叉堆实现,运行时间在O(nlgn)3、任务调度问题:时间复杂度为O(n2),因为算法中O(n)次独立性检查中每一次都有花O(n)的时间(7)二项堆:1、可合并堆时间复杂度过程二叉堆(最坏)二项堆(最坏)Fibonacci(平摊)MAKE-HEAPΘ(1)Θ(1)Θ(1)INSERTΘ(lgn)Ω(lgn)Θ(1)MINIMUMΘ(1)Ω(lgn)Θ(1) EXTRACT-MINΘ(lgn)Θ(lgn)O(lgn) UNIONΘ(n)Θ(lgn)Θ(1) DECREASE-KEYΘ(lgn)Θ(lgn)Θ(1) DELETEΘ(lgn)Θ(lgn)O(lgn)2、二项树B k是一种递归定义的树,由两颗B k-1连接而成,其中一颗树的根是另一颗树的根的最左孩子性质:1)共有2k个结点2)树的高度为k3)在深度i处恰有(上k,下i)(因此叫二项树)个结点,其中i=0,...,k;4)根的度数为k,它大于任何其他结点的度数,并且,如果对根的子女从左到右编号为k-1,k-2,...,0,子女i是子树Bi的根。
中科大计算机考研真题

中科大计算机考研真题中科大计算机考研是众多计算机科学与技术专业学生追求的目标之一。
在这道真题中,我们将回顾一些历年的考题,并提供一些解析和思路,以帮助考生更好地准备考试。
本文共分为三个主题部分:操作系统、数据库和算法与数据结构。
一、操作系统1. 多道批处理系统是怎样实现作业调度的?请简要描述操作系统的作业调度过程。
解析:多道批处理系统是指一台计算机同时处理多个作业,而不需要人工干预。
作业调度是指操作系统根据一定的算法,决定当前执行哪个作业。
作业调度过程一般包括以下几个步骤:首先,操作系统根据作业的优先级和提交时间等信息,为每个作业分配一个初始的调度优先级。
其次,对于多个处于就绪状态的作业,操作系统根据调度算法,选择一个作业进行执行。
常见的调度算法有先来先服务(FCFS)、短作业优先(SJF)、最高响应比优先(HRRN)等。
最后,当一个作业执行完成或者处于阻塞状态时,操作系统会根据调度算法重新选择一个作业进行执行,直到所有作业完成。
2. 请解释死锁的概念,并说明死锁的产生条件和解决方法。
解析:死锁是指多个进程在竞争有限资源时,由于彼此之间的互斥和请求资源的非预期顺序等原因,导致都在等待对方释放资源,从而导致系统无法继续执行。
死锁的产生条件主要包括:互斥条件:进程对所请求的资源进行排他性控制,即一次只能有一个进程使用该资源。
持有和等待条件:进程已经持有了一个资源,但又请求额外的资源,而这些资源又被其他进程所占有。
不剥夺条件:其他进程不能强行剥夺一个进程已经持有的资源,只能由进程自己释放。
环路等待条件:多个进程之间形成了一个循环等待资源的关系。
死锁的解决方法主要有以下几种:鸵鸟算法:忽略死锁的存在,不进行处理。
适用于死锁发生概率极低的系统。
死锁检测与恢复:通过系统资源分配图等方法,检测死锁的发生,并进行资源回收和进程终止等操作,使系统恢复正常状态。
死锁预防:通过破坏死锁产生的四个条件之一,预防死锁的发生。
算法与程序部分复习试题
VB题复习题1.下列各组控件都具有Caption属性的是CA.窗体、文本框B.标签、定时器C.窗体、标签D.文本框、定时器2. 下面关于算法的错误说法是BA)算法必须有输出B)算法必须在计算机上用某种语言实现C)算法不一定有输入D)算法必须在有限步执行后能结束3.下列每个控件都具有的属性是AB.CaptionC.FontD.Interval4.下列运算结果中,值最大的是DA.3\4B.3/4C.4 mod 3D.3 mod 4 〖/表示除,\表示整除,mod表示求余数〗5.以下哪个是合法的变量名DA.Len B.Test@qw C.6cost_1 D.count2s6.在Visual Basic代码中,将多个语句合并在一行上的并行符是BA. 撇号(')B. 冒号(:)C. 感叹号(!)D. 问号(?)7.下列语句中,可以表示输入语句的有 C D ,输出语句的有ABE表示赋值语句的有ADFG (多选)A.text1.text=str(a)B.msgbox(a)C.inputbox()D.P=val(text5.text)E.print aF. a=a*b+cG.ads=3098.下列控件中可设置滚动条的是C (即具有ScrollBars属性的对象)A.计时器B.标签C.文本框D.按钮9.下面程序执行的结果是CPrivate Sub Form_Click()A = "123":B = "456"C = Val(A) + Val(B) 〖val是把字符转化为数值的函数〗msgbox (C \ 100)End SubA.123B.3C.5D.57910.在VB中,执行“IF A>5 then b=10 else b=20”语句后(程序在该行语句前未对A变量赋值),B值为C 【说明:在VB中,如果变量未被赋值而直接引用,则数值型变量的值为0,字符型变量的值为空串“”。
中科大算法设计与分析分布式算法部分作业部分答案
7. 证明异步环系统中不存在匿名的Leader选举 证明异步环系统中不存在匿名的Leader选举 算法。 算法。 解: 每个处理器的初始状态相同,状态机相同,接收的消 息序列也相同(只有接收消息的时间可能不同),故 最终处理器的状态一致。由于处理一条消息的至多需 要1时间单位,若某时刻某个处理器宣布自己是Leader 时间单位,若某时刻某个处理器宣布自己是Leader (接收到m条消息),则在有限时间内(m (接收到m条消息),则在有限时间内(m时间单位) 其他处理器也会宣布自己是Leader。 其他处理器也会宣布自己是Leader。 所以。。。 Note:每个处理器陆续宣布自己是Leader! Note:每个处理器陆续宣布自己是Leader!
解:考虑运行在环上的分布式算法的1 time时间复杂性和时 解:考虑运行在环上的分布式算法的1-time时间复杂性和时 间复杂性。 <1> 1-time时间复杂性: 1-time时间复杂性: 满足条件O2:发送和接收一个msg之间的时间恰好是一个时 满足条件O2:发送和接收一个msg之间的时间恰好是一个时 间单位,每个阶段节点转发消息都是同步进行,从而1 间单位,每个阶段节点转发消息都是同步进行,从而1-time 时间复杂度仅与环直径相关,为O(D)。 时间复杂度仅与环直径相关,为O(D)。 <2> 时间复杂度: 满足条件T2:一个msg的发送和接收之间的时间至多为一个 满足条件T2:一个msg的发送和接收之间的时间至多为一个 时间单位,即为O(1)。节点转发消息并非同步进行,消息转 时间单位,即为O(1)。节点转发消息并非同步进行,消息转 发轨迹可能呈链状结构,时间复杂性与环节点个数相关,为 O(n)。 O(n)。
5. 修改Alg2.3,使其时间复杂度为O(n)。 修改Alg2.3,使其时间复杂度为O(n)。 解:两种考虑方式: <1> 在每个处理器中维护一本地变量,同时添加一 消息类型,在处理器Pi转发M时,发送消息N 消息类型,在处理器Pi转发M时,发送消息N通知 其余的未访问过的邻居,这样其邻居在转发M 其余的未访问过的邻居,这样其邻居在转发M时 便不会向Pi转发。 便不会向Pi转发。 <2> 在消息M和<parent>中维护一发送数组,记录 在消息M <parent>中维护一发送数组,记录 已经转发过M 已经转发过M的处理器名称。 两种方式都是避免向已转发过M 两种方式都是避免向已转发过M的处理器发送消息 M,这样DFS树外的边不再耗时,时间复杂度也降 ,这样DFS树外的边不再耗时,时间复杂度也降 为O(n)。 O(n)。
中科大软院软测期末复习提纲知识点
中科大软院软测期末复习提纲知识点一、软件测试基础知识1.软件测试概述-软件测试的定义和目标-软件测试的作用和重要性-软件测试的原则和方法2.软件测试流程-软件测试生命周期-软件测试过程中的活动和任务-不同阶段的测试策略和技术3.软件测试的类型-黑盒测试和白盒测试-功能测试、性能测试、安全测试、用户界面测试等4.软件测试用例设计-测试用例的概念和特性-测试用例设计的方法和技术-边界值分析、等价类划分、路径覆盖等二、软件测试技术1.静态测试技术-静态测试的概念和特点-静态测试方法和工具-代码审核、文档检查、需求审查等2.黑盒测试技术-黑盒测试的概念和特点-黑盒测试方法和技术-等价类划分、边界值分析、决策表等3.白盒测试技术-白盒测试的概念和特点-白盒测试方法和技术-代码覆盖率、路径覆盖、循环复杂度等4.自动化测试技术-自动化测试的概念和优势-自动化测试工具和框架-脚本编写和执行、测试自动化流程等三、软件测试管理1.软件测试计划-软件测试计划的编制和执行-软件测试计划的内容和要素-软件测试计划的评审和修改2.缺陷管理-缺陷管理的概念和重要性-缺陷管理的流程和工具-缺陷跟踪、缺陷分析、缺陷解决等3.测试评估和报告-测试评估的目的和方法-测试阶段评估和总结-测试报告的编写和呈现方式4.软件测试团队协作-软件测试团队的角色和职责-团队协作的原则和模式-沟通和合作技巧的培养四、软件测试工具1.测试管理工具-缺陷管理工具、测试计划工具、测试报告工具等-常用测试管理工具的介绍和比较2.自动化测试工具-自动化测试脚本工具、自动化测试执行工具等-常用自动化测试工具的介绍和比较3.性能测试工具-压力测试工具、负载测试工具等-常用性能测试工具的介绍和比较4.安全测试工具-漏洞扫描工具、代码审计工具等-常用安全测试工具的介绍和比较。
2023年中国计算机科学与技术学院算法考试常识题
2023年中国计算机科学与技术学院算法考试常识题一、算法基础知识1. 什么是算法?算法是用来解决问题或执行计算的一系列有序步骤的描述。
2. 算法的属性有哪些?- 正确性:算法必须产生正确的结果。
- 可读性:算法应该易于理解和解释。
- 高效性:算法应该在合理的时间内得出结果。
- 优雅性:算法应该简洁、直观。
3. 算法的时间复杂度和空间复杂度是什么?- 时间复杂度:衡量算法执行时间的度量,通常表示为大O符号。
常见的时间复杂度有O(1)、O(n)、O(log n)等。
- 空间复杂度:衡量算法执行过程中所需的存储空间的度量,通常也表示为大O符号。
二、常见算法思想1. 递归算法是什么?递归算法是一种通过将问题分解为规模较小的相同问题来解决的方法。
它涉及到一个递归函数调用自身的过程。
2. 动态规划算法是什么?动态规划算法是通过将问题分解为更小的子问题来解决的一种方法。
它通常用于求解最优化问题,在每个子问题上进行决策,最终得出整体最优解。
3. 贪心算法是什么?贪心算法是一种通过在每个步骤中选择局部最优解来得到整体最优解的方法。
它不一定能得到最优解,但通常可以得到较好的近似解。
三、常见算法题型1. 排序算法常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。
这些算法都有不同的时间复杂度和适应场景。
2. 查找算法常见的查找算法有线性查找和二分查找。
线性查找逐个检查每个元素直到找到目标元素,二分查找则是基于已排序的列表进行比较。
3. 图算法图算法用于解决图形结构相关的问题,如最短路径问题、最小生成树问题等。
常见的图算法有深度优先搜索(DFS)和广度优先搜索(BFS)。
4. 字符串算法字符串算法用于解决与字符串相关的问题,如字符串匹配、字符串编辑距离等。
常见的字符串算法有KMP算法、Boyer-Moore算法等。
四、总结本文简要介绍了算法的基础知识,包括算法的定义、属性,以及常见算法思想和题型。
了解这些常识题对于计算机科学与技术学院的学生来说是非常重要的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、概念题:
(1)排序算法时间复杂度:
排序算法最好最坏平均
插入O(n)O(n2)O(n2)
归并O(nlogn)O(nlogn)O(nlogn)
快排O(nlogn)O(n2)O(nlogn)排序算法空间复杂度:
1、所有简单排序和堆排序都是0(1)
2、快速排序为0(logn),要为递归程序执行过程栈所需的辅助空间
3、归并排序和基数排序所需辅助空间最多,为O(n)
(2)渐近记号
1、渐近确界:Θ(g(n))={f(n):存在正常数c1和c2和n0,使对所有的n>= n0,都有0<=c1g(n)<=f(n)<=c2g(n)}。
大Θ记号给出函数的渐进确界。
2、渐近下界:Ω(g(n))={f(n):存在正常数c和n0,使对所有的n>=n0,都有0<=cg(n)<=f(n)}。
大Ω记号给出函数的渐进下界。
3、渐近上界:O(g(n))={f(n):存在正常数c和n0,使对所有的n>=n0,都有0<=f(n)<=cg(n)}。
大O记号给出函数的渐进上界。
(3)二叉查找树:
执行基本操作的时间与树的高度成正比。
搜索、插入、删除的复杂度等于树高,期望O(lgn),最坏O(n)(数列有序,树退化成线性表)
(4)红黑树:
1、时间复杂度:
基本动态集合操作:O(log n),n是树中元素的数目。
2、性质:
1)节点是红色或黑色。
2)根节点是黑色。
3)每个叶节点(NIL节点)是黑色的。
4)如果一个结点是红的,则它的两个儿子都是黑的(不能有两个连续
红结点)
5)从任一节点到其子孙结点的所有路径都包含相同数目的黑色节点。
3、相关概念,定理:
1)黑高度:从某个结点出发(不包括该结点)到达一个叶结点的任意一条路径上,黑色结点的个数称为该结点x的黑高度,bh(x)。
红黑树的黑高度定义为其根节点的黑高度。
2)一颗有n个内结点的红黑树的高度至多为2lg(n+1)。
(用2-3-4树理解)
3)在一颗黑高度为K的红黑树中,总结点数最多有22k+1-1,此时内结点
最多为22k-1(满二叉树,红黑交替),内结点最少有2k-1
4)RB-INSERT-FIXUP操作所作的旋转不超过两次,RB-DELETE-FIXUP所作的操作至多三次旋转
(5)动态规划:
1、装配线调度:FASTEST-WAY时间复杂度O(n)
2、矩阵链乘法:MATRIX-CHAIN-ORDER时间复杂度O(n3)
3、最长公共子序列:LCS-LENGTH时间复杂度为O(mn),m、n为序列的长度
4、最优二叉查找树:OPTIMAL-BST时间复杂度为O(n3)
(6)贪心算法:
1、活动选择问题:初试时活动已按结束时间排序,O(n),否则可在O(nlgn)内排序
2、哈夫曼编码:Q用最小二叉堆实现,运行时间在O(nlgn)
3、任务调度问题:时间复杂度为O(n2),因为算法中O(n)次独立性检查中每一次都有花O(n)的时间
(7)二项堆:
1、可合并堆时间复杂度
过程二叉堆(最坏)二项堆(最坏)Fibonacci(平摊)MAKE-HEAPΘ(1)Θ(1)Θ(1)
INSERTΘ(lgn)Ω(lgn)Θ(1)
MINIMUMΘ(1)Ω(lgn)Θ(1) EXTRACT-MINΘ(lgn)Θ(lgn)O(lgn) UNIONΘ(n)Θ(lgn)Θ(1) DECREASE-KEYΘ(lgn)Θ(lgn)Θ(1) DELETEΘ(lgn)Θ(lgn)O(lgn)
2、二项树B k是一种递归定义的树,由两颗B k-1连接而成,其中一颗树的根是另一颗树的根的最左孩子
性质:
1)共有2k个结点
2)树的高度为k
3)在深度i处恰有(上k,下i)(因此叫二项树)个结点,其中i=0,...,k;
4)根的度数为k,它大于任何其他结点的度数,并且,如果对根的子女从左到右编号为k-1,k-2,...,0,子女i是子树Bi的根。
5)在一颗包含n个结点的二项树中,任意结点的最大度数为lgn
3、二项堆H由一组二项树构成,但需要满足下面两个性质:
1)H中的每个二项树遵循最小堆的性质:结点的关键字大于等于其父结点
的关键字。
(最小堆性质、度的唯一性)
2)对于任意非负整数k,在H中至多有一棵二项树的根具有度数k。
二、综合:
(1)分治法(自顶向下)
1、分解:将原问题分解成一系列子问题
2、解决:递归的解各子问题,若子问题足够小,则直接求解
3、合并:将子问题的结果合并成原问题的解
适用条件:
1、原问题可以分解为若干与原问题相似的子问题
2、子问题的解可以求出
3、子问题的解可以合并成原问题的解
4、分解出的子问题应相互独立,即没有重叠子问题
(3)合并排序(merge sort):
1、分解:将n个元素分成各含n/2个元素的子序列;
2、解决:用合并排序法对两个子序列递归地排序;
3、合并:合并两个已排序的子序列以得到排序结果。
(4)动态规划(自底向上):
1、描述问题的最优解结构特征
2、递归定义最优解值
3、自底向上计算最优解值
4、从已计算最优解值的信息中构造最优解结构
两个要素:最优子结构和重叠子问题
(5)贪心算法
1、确定问题的最优子结构性质
2、将优化的问题转化为一种选择,即贪心选择
3、贪心选择只能有一个子问题非空
4、证明贪心选择是正确的
两个要素:贪心选择性质和最优子结构
(6)主方法
T(n)=a*T(n/b)+f(n)其中a≥1和b>1是常数,f(n)是一个渐近正的函数。
n 为非负整数,n/b指floor(n/b)或ceiling(n/b)。
那么T(n)可能有如下的渐近界:
1、若对于某常数ε>0,有f(n)=O(n^(log_b(a)-ε)),则T(n)=Ө(n^(log_b(a)));
2、若f(n)=Ө(n^(log_b(a))),则T(n)=Ө(n^(log_b(a))*lgn);
3、若对某常数ε>0,有f(n)=Ω(n^(log_b(a)+ε)),且对常数c<1与足够大的n,有a*f(n/b)≤c*f(n),则T(n)=Ө(f(n))。
(7)将41,38,31,12,19,8插入到初试为空的红黑树。