ImageVerifierCode 换一换
格式:DOCX , 页数:56 ,大小:578.62KB ,
资源ID:13538879      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13538879.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新《算法导论》复习大纲DOC资料Word文档下载推荐.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最新《算法导论》复习大纲DOC资料Word文档下载推荐.docx

1、Key=Aji=j-1While i0 and aikey /第二层循环Ai+1=Aii=i-1Ai+1=key 2.算法复杂性及其度量 (1)时间复杂性和空间复杂性; (2)最坏、最好和平均情形复杂性;顺序情况下B(n)=O(n)、倒序情况下W(n)=O(n2)、A(n)=O(n2)W(n)空间复杂性:需要常数个额外的临时空间存储临时数据2. 插入排序的最坏、最好和平均时间最坏O(n2)、最好O(n)和平均时间O(n2),空间复杂度是O(1),稳定排序3. 归并排序算法及其时间复杂性时间(n log n)1)算法步骤分解:分解待排序的n个元素的序列为各具n/2个元素的两个子序列解决:适用归并

2、排序递归的排序2个子序列合并:从左到有遍历2个子序列,比较最前面的元素,将较小的元素移出子序列 合并到上级序列的末尾,循环进行上2步,直接所有元素都被合并到上级序列,公进行r-p+1次;MERGE-SORT(A,p,r) if prq=向下取整(p+r)/2MERGE-SORT(A,p,q);MERGE-SORT(A,q+1,r)MERGE(A,p,q,r)N1=q-p+1N2=r-q将A拆成长度分别为N1、n2的2个子数组L,RL,R的末尾元素的后一个元素取值无穷大,作为哨兵;i=1,j=1for k=p to r if Li=RjAk=Lii=i+1elseAk=Rjj=j+1 3函数增长

3、率(ch3)1. 渐近记号O、的定义及其使用1) O渐进上界:0=f(n), f(n)的阶小与g(n)的阶2)渐进下界:=C(g(n) =f(n), f(n)的阶大与g(n)的阶3)渐紧界:=C1(g(n) =f(n) =C2(g(n), f(n)的阶与g(n)的阶相等2. 标准复杂性函数及其大小关系(1) 多项式时间阶的大小 O(1) O(log n) O(n) O(n*log n) O(n) O(n3)(2) 指数时间阶的大小 O(2n) 证明2)对象限界最大最小项限界;几何级数限界;3)和式分解简单的一分为二;更复杂的划分;积分近似;4)Knuth求和:使用数学归纳法;使用摄动法;使用递

4、归;使用积分;使用二重求和;使用有限演算;使用母函数。4 递归关系式(ch4)1.替换法(1)猜测解数学归纳法证明; T(n)=2T(n/2)+n 猜:T(n)= O(nlogn)证: 2T(n/2)+n=Cnlogn 带入计算(2)变量变换法;T(n)=2T(n1/2)+log n令m= logn,则,n=2mT(2m)=2T(2m -1/2)+m ,令S(m)=T(2m)则:S(m)=2Sm/2+m类似T(n)=2T(n/2)+n=O(m log m)=O(logn log log n)2.迭代法(1)展开法; T(1)=O(1)T(n)=3T(n/4)+n=n+3n/4+32n/42+3

5、KT(n/4K)总有K,使得1=n/4K=2,即K=1,b=1整数Case1 f(n)= O(n logba-) = C n logba- 则:T(n)= (n log b a)Case2 f(n)= C n logba+ 且:af(n/b)=cf(n),对于常数C=1和足够大的n成立,则T(n)= (f(n)5 堆排序(ch6)1堆的概念和存储结构 堆是一种数据结构,堆是一个数组,近似完全二叉树,除最底层外,全部从左到右填充满,对于序号为i的结点,其父结点的序号为i/2,其左孩子的序号为2i,其右孩子序号为2i+1;=A.heap-size=A.length n个元素的序列k1,k2,ki,

6、kn当且仅当满足下关系时,称之为堆。(ki= k2i+1), (i = 1,2,3,4.n/2) 堆的性质和种类大根堆:除根结点外,所有结点小于其父结点;用于堆排序、收益问题。小根堆:除根结点外,父结点小于其所有结点;用于优先队列;成本问题; 堆的操作:建堆;整堆;1)整堆算法:假设i的左右子树已经是大根堆,对i结点进行整堆,使其也是大根堆对调整的子树结点循环进行上2步骤,将小元素逐级下沉,直至满足堆特性;整堆时间复杂度 O(log n)2)整堆伪代码Max-heapify(A,i) l=left(i)r=right(i)if lAilargest=lelse largest=iif rlar

7、gest=rif largestiexchange ai with largestmax-heapify(A,largest)3)建堆算法因为从A.heap-size/2+1起到A.heapsize,都是叶子结点,故建堆可从A.heap-size/2起到1整堆实现;算法复杂度O(n)4)建堆伪代码Bulid_max_heap(A)heap-size=A.lengthfor i= A.heap-size /2 to 1 堆排序算法和时间复杂性算法思想:1)将数组建堆2)将根元素与结点n交换并缩减堆的长度13)对首元素整堆4)重复上述3个步骤,直至堆大小为1(i=2时进行最后一次重复操作)时间复杂

8、度O(n lg n)伪代码Heapsize(A) build_max_heap(A) For i=A.length to 2 Exchange A1 to Ai A.heap-size=A.heap-size-1 max-heapfly(A,1) 优先队列及其维护操作优先队列是维护集合S的数据结构,每个元素具有一个关键字key;用于分支限界、搜索算法。支持如下操作:a) 插入 insert(S,x) 1)将元素插入末尾Size+1的位置2)从插入位置自底而上调整,使之满足堆性质算法复杂度 O(log n)b) 取最大关键字Maximum(S)算法思想,输出优先级最大的,也就是堆的根元素;c)删

9、除并返回最大键值的元素 Extract-max(S)1) 取堆根2) A1-Aheap-sizeA3) heap-sizeA4) 对A1整堆时间复杂度O(log n)d) 增值 元素x的关键字增加到k Increase-Key(S,x,k)1)如果Ai的关键字大于K,则对i进行整堆;2)否则,若i不是根结点且K大于Ai的父结点,则交换Ai与其父结点的关键字,并将K值赋予其父结点。6 快速排序(ch7)1.快速排序算法及其最好、最坏时间和平均时间快排采用分治法的思想,最好O(nlogn),最坏O(n2),平均O(nlogn)(1)分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小

10、但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。(2)快速排序的基本思想 设当前待排序的无序区为Rlow.high,利用分治法可将快速排序的基本思想描述为:分解: 在Rlow.high中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间Rlow.pivotpos-1)和Rpivotpos+1.high,并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字pivot.key,右边的子区间中所有记录的关键字均大于等于pivot.key,而基准记录pivot则位于正确的位置(pivotpos)上,它无

11、须参加后续的排序。Ap.r被划分为俩个(可能空)的子数组Ap .q-1和Aq+1 .r,使得Ap .q-1 = Aq = Aq+1 .r求解:通过递归调用快速排序对左、右子区间Rlow.pivotpos-1和Rpivotpos+1.high快速排序。3合并/快速排序void quick_sort(int s, int l, int r) if (l r) int i = l, j = r, x = sl; while (i j) while(i = x) / 从右向左找第一个小于x的数 j-; if(i si+ = sj; si x) / 从左向右找第一个大于等于x的数 i+; sj- = si; si = x; quick_sort(s, l, i - 1); / 递归调用 quick_sort(s, i + 1, r);2.随机快速排序算法

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1