图的定义和术语图的存储结构图的遍历图的连通性问题.ppt

图的定义和术语图的存储结构图的遍历图的连通性问题.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图的定义和术语图的存储结构图的遍历图的连通性问题

1、图的定义和术语 2、图的存储结构 3、图的遍历 4、图的连通性问题 5、有向无环图及其应用 6、最短路径 第七章 图 7.1 图的定义和术语 7.3 图的遍历 7.6 最短路径 8.1 静态查找表 8.3 哈希表 3、冲突解决 A)开放定址法 方法:当冲突发生时,形成一个探查序列;沿此序列逐个地址探查,直到找到一个空位置(开放的地址),将发生冲突的记录放到该地址中,即 Hi=(H(key)+di) % m,i=1,2,……k(k?m-1) 其中:H(key)——哈希函数 m——哈希表表长 di——增量序列 分类 线性探测再散列:di=1,2,3,……m-1 二次探测再散列:di=12,-12,22,-22,32,……±k2(k?m/2) 伪随机探测再散列:di=伪随机数序列 9.1 概述 9.4 选择类排序 外部排序的方法 第 11章 有效算法的设计 归并:将已排序的若干个表合并成一个有序表。当将两个有序表归并为一个时称为2-路归并。 1)2-路归并: 5 23 9 54 61 63 70 8 11 9 25 30 40 5 9 8 9 11 23 25 30 54 40 61 归并:将已排序的若干个表合并成一个有序表。当将两个有序表归并为一个时称为2-路归并。 1)2-路归并: 5 23 9 54 61 63 70 8 11 9 25 30 40 5 9 8 9 11 23 25 30 54 40 61 63 归并:将已排序的若干个表合并成一个有序表。当将两个有序表归并为一个时称为2-路归并。 1)2-路归并: 5 23 9 54 61 63 70 8 11 9 25 30 40 5 9 8 9 11 23 25 30 54 40 61 63 70 归并:将已排序的若干个表合并成一个有序表。当将两个有序表归并为一个时称为2-路归并。 1)2-路归并: 5 23 9 54 61 63 70 8 11 9 25 30 40 5 9 8 9 11 23 25 30 54 40 61 63 70 时间:与表长成正比,若一个表表长是m,另一个是n,则时间是O(m+n) 2) 程序描述: void merge(int sr[],int tr[],int l,int m,int n) { int i,j,k; i=l; j=m+1; k=l-1; while(i=m j=n) if(sr[i]sr[j]) tr[++k]=sr[i++]; else tr[++k]=sr[j++]; while(i=m) tr[++k]=sr[i++]; while(j=n)tr[++k]=sr[j++]; for(i=l;i=n;i++) sr[i]=tr[i]; } 有序段1 有序段2 有序段 有序段 sr sr tr l m n 3)归并排序 开始将数据看成长度为1的有序表,两两归并为长度为2的表,依次类推直到长度为n的有序表 子表长:1 9 7 8 3 52 4 16 子表长:2 7 9 3 8 4 52 16 子表长:4 3 7 8 9 4 16 52 子表长:7 3 4 7 8 9 16 52 4)归并排序描述 void msort(int r[],int st[],int s,int t) { int m; if(st) { m=(s+t)1; msort(r,st,s,m); msort(r,st,m+1,t); merge(r,st,s,m,t); } } void mergesort(int r[],int n) { int *st=new int[n]; msort(r,st,0,n-1); delete st; } 5)分析 时间:O(nlogn) 空间:O(n) void merge(int sr[],int tr[],int l,int m,int n) { int i,j,k; i=l; j=m+1; k=l-1; while(i=m j=n) if(sr[i]sr[j]) tr[++k]=sr[i++]; else tr[++k]=sr[j++]; while(i=m) tr[++k]=sr[i++]; while(j=n)tr[++k]=sr[j++]; for(i=l;i=n;i++) sr[i]=tr[i]; } 5) merge的

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档