- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单源最短路径 Dijkstra算法基本思想 把图中所有顶点分成两个集合S和V-S S:最短路径已确定的顶点集合 V-S:尚未确定最短路径的顶点集合 按最短路径长度递增的顺序逐个把V-S的顶点加到S中去,直至从s出发可以到达的所有顶点都包括进S中。 Dijkstra算法 实现 初始: 集合S只包含源点s,即S={s} 设v是V中某顶点,把从s到v且中间只经过集合S中顶点的路径称“从源到v的特殊路径”,用一维数组D记录当前找到的从s到每个顶点的最短特殊路径长度 D初始:若s到v有弧, D[v]存弧的权值,否则存∞ Dijkstra算法 取最小:每次从集合V-S中取出一个最短特殊路径长度最小的顶点u,将u加入集合S, 修改权值(修改D中未求出的最短路径长度):由于引入u,对未求出最短路径的顶点i进行判断,若满足:D[i] D[u]+W[ u, i ] 则改为最短,令D[i] = D[u]+W[ u, i ] 另设立存储最短路径中当前顶点前驱顶点域pre,用于存步骤2的顶点u。 V4 V0 V1 V3 V2 10 100 30 10 10 60 50 20 单源最短路径Dijkstra算法举例 图7.19 表7.2 S V0 V1 V2 V3 V4 初态 {v0} len:0 pre:0 len:10 pre:0 len:∞ pre:0 len:30 pre:0 len:100 pre:0 V1入 {v0,v1} len:0 pre:0 len:10 pre:0 len:60 pre:1 len:30 pre:0 len:100 pre:0 V3入 {v0,v1,v3} len:0 pre:0 len:10 pre:0 len:50 pre:3 len:30 pre:0 len:90 pre:3 V2入 {v0,v1,v3,v2} len:0 pre:0 len:10 pre:0 len:50 pre:3 len:30 pre:0 len:60 pre:2 V4入 {v0,v1,v3,v2,v4} len:0 pre:0 len:10 pre:0 len:50 pre:3 len:30 pre:0 len:60 pre:2 第 8 章 内排序 直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、桶式排序、基数排序:手工排序每趟过程 各种排序方法的适用场合、时间复杂度 必须熟悉快排、堆排、桶式排序的算法 原始序列选枢轴:(left+right)/2枢轴??尾64,枢轴暂存尾“空闲”从枢轴对面与枢轴比 25 34 45 32 34’ 12 29 64 0 1 2 3 4 5 6 7 L R 25 34 45 64 34’ 12 29 32 L 34 R 29 L 25 34 45 64 34’ 12 29 32 32 45 R 12 L 64 R R 25 29 12 (32) 34’ 64 45 34 32 改进快排 排序算法的理论性能 表8.3 p229 算法 最大时间 平均时间 最小时间 S(n) 稳定性 直接插入排序 Θ(n2) Θ(n2) Θ(n) Θ(1) 稳定 冒泡排序 Θ(n2) Θ(n2) Θ(n) Θ(1) 稳定 直接选择排序 Θ(n2) Θ(n2) Θ(n2) Θ(1) 不稳定 快速排序 Θ(n2) Θ(nlog n) Θ(nlog n) Θ(log n) 不稳定 归并排序 Θ(nlog n) Θ(nlog n) Θ(nlog n) Θ(n) 稳定 堆排序 Θ(nlog n) Θ(nlog n) Θ(nlog n) Θ(1) 不稳定 桶式排序 Θ(n+m) Θ(n+m) Θ(n+m) Θ(n+m) 稳定 基数排序 Θ(d·(n+r)) Θ(d·(n+r)) Θ(d·(n+r)) Θ(n+r) 稳定 时间性能 当待排记录序列按关键字顺序有序时 直接插入排序、冒泡排序的T(n) = O(n), 快速排序的T(n) 蜕化为O(n2 ) 。 直接选择排序、堆排序、归并排序的时间性能不随记录序列中关键字的分布而改变。 空间性能 1. 所有的简单排序方法(包括:直接插入、冒泡和简单选择) 和堆排序的空间复杂度为O(1); 2. 快速排序空间复杂度为O(logn),是递归程序执行过程中栈所需的辅助空间; 3. 归并排序所需辅助空间最多,其空间复杂度为 O(n); 排序存储结构总结 用链表存储待排记录,可以选择排序方法: 直接插入、直接选择、冒泡、基数 其他排序:必须顺序
文档评论(0)