- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法分析考试提纲
第四章 排序
1、基数排序(算法,程序),注意原理
例 用桶排序法将以下6个数排序:
379,258,731,432,913,455
? 0号桶 1号桶 2号桶 3号桶 4号桶 5号桶 6号桶 7号桶 8号桶 9号桶 按各位数置桶 ? 731 432 913 ? 455 ? ? 258 379 第一次合并后队列 731 432 913 455 258 379 ? ? ? ? 按十位数置桶 ? 913 ? 731
432 ? 455
258 ? 379 ? ? 第二次合并后队列 913 731 432 455 258 379 ? ? ? ? 按百位数置桶 ? ? 258 379 432
455 ? ? 731 ? 913 结果 258 379 432 455 731 913 ? ? ? ? 基数排序算法(算法4.1)
procedure BUCKETSORT
begin
置A1,A2,…,An到队列QUEUE中;
for i←j step -1 until 1 do
begin
for I←0 to m-1 do 置Q[I]为空;
while QUEUE非空 do 把QUEUE中的第一个元素Ai置入桶Q[aij]中;
for l←0 to m-1 do 依次置Q[l]中的元素到QUEUE中
end
end
2、堆选排序(算法、程序)
1)用完全二叉树表示表示堆,并用线性方法排除完全二叉树,构造一个堆,满足:1、是一颗完全二叉树;2、ai>=a2i及ai>=a2i
2)构造一个堆排序算法(算法4.3)(注:书上、PPT上均有错)
3)注意时间复杂度
堆排序:
procedure sift(i,m:integer);{调整以i为根的子树成为堆,m为结点总数}
var k:integer;
begin
a[0]:=a[i]; k:=2*i;{在完全二叉树中结点i的左孩子为2*i,右孩子为2*i+1}
while k =m do begin
if (k m) and (a[k] a[k+1]) then inc(k);{找出a[k]与a[k+1]中较大值}
if a[0] a[k] then begin a[i]:=a[k];i:=k;k:=2*i; end
else k:=m+1;
end;
a[i]:=a[0]; {将根放在合适的位置}
end;
3、插入法
1)使用的是折半查找的思想
2)分段函数,理解含义,会使用第五章 动态规划
1、单源最短路径问题
注意:最优化从当前状态开始
对于图5.1,计算过程如下:
COST(3,6)=min{6+ COST(4,9), 5+ COST(4,10)}=min{6+4, 5+ 2}=7
D(6)=10
COST(3,7)=min{4+ COST(4,9), 3+ COST(4,10)}=min{4+4, 3+ 2}=5
D(7)=10
COST(3,8) =7 D(8)=10
COST(2,2)=min{4+ COST(3,6), 2+ COST(3,7), 1+ COST(3,8)}=min{11, 7, 8}=7 D(2)=7
COST(2,3) =9 D(3)=6
COST(2,4)=11+ COST(3,8)=18 D(4)=8
COST(2,5) =15 D(5)=7
COST(1,1)=min{9+ COST(2,2), 7+ COST(2,3), 3+ COST(2,4), 2+ COST(2,5)}=min{16, 16, 21, 17}=16 D(1)=2
因此,从S到T的一条最短路径的代价是16。只要我们每次记下使COST(i,j)达到最小的第j+1级的顶点号,这条路径也就找到了。
P(1)=1 P(5)=12 P(2)=D(P(1))=D(1)=2
P(3)=D(P(2))=D(2)=7
P(4)=D(P(3))=D(7)=10
最短路径 1→2→7→10→12
算法:两点间的最短路算法(由后向前)
_用cost(j)代替cost(i,j),即不记录顶点所在级,存储多级图时应如何处理?
____________________________________
PROCEDURE FGRAPH
Begin
For i←1 to n do COST[i] ←0;
For j←n-1 to 1
文档评论(0)