- 4
- 0
- 约1.14万字
- 约 78页
- 2017-06-07 发布于湖北
- 举报
数据结构第1章剖析
通常,从算法中选取一种对于研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法执行的时间度量。 例, for ( j = 1 ;j=n ;j++ ) X = X + 1 ; for ( i = 1 ;i=n ;i++ ) (c) for ( i = 1 ;i=n ;i++ ) X = X + 1 ; (b) X = X + 1 ; (a) 基本操作重复执行的次数分别为 1,n,n2 频度: 语句重复执行的次数称为该语句的频度,记f(n)。 设算法的问题规模为n; 时间复杂度: 算法执行时间度量,记T(n)=O( maxlevel(f(n)) )。 对算法各基本操作的频度求和,便可得算法的时间复杂度。 但实际中我们所关心的主要是一个算法所花时间的数量级,即取算法各基本操作的最大频度数量级。 f(n) = 1 + n + n2 + n3 T(n) = O( n3 ) O的数学定义: 若T(n)和f(n)是定义在正整数集合上的两个函数,则如果存在正常数C和n0,使得当n≥n0时,总满足0≤T(n)≤Cf(n),则记做T(n)=O(f(n)) 也就是只求出T(n)的最高阶(数量级),忽略其低阶项和常系数,这样既可简化T(n)的计算,又能比较客观地反映出当n很大时,算法的时间性能。 2个N*N矩阵相乘 for (i= 1; i=n; ++i) for (j= 1; j=n; ++j){ c[i][j] = 0; for (k= 1; k=n; ++k) c[i][j] += a[i][k] * b[k][j]; } n+1 n(n+1) n2 n2(n+1) n3 T(n) = O( n3 ) (1) x=x+1 ; 其时间复杂度为O(1), 我们称之为常量阶; (2) for (i=1; i= n; i++) x=x+1; 其时间复杂度为O(n), 我们称之为线性阶; (3) for (i=1; i= n; i++) for (j=1; j= n; j++) x=x+1; 其时间复杂度为O(n2), 我们称之为平方阶。 此外算法还能呈现的时间复杂度有对数阶O(log2n), 指数阶O(2n)等。 常数阶 对数阶 线性阶 线性对数阶 平方阶 立方阶 ……… K次方阶 指数阶 常见的时间复杂度,按数量级递增排序: 例如: 下列程序段: for (i=1; i= n; i++) for (j=i; j= n; j++) x++; 语句x++的执行频度为 n+(n-1)+(n-2)+…+3+2+1 =n(n+1)/2 而该语句执行次数关于n的增长率为n2, 即时间复杂度为O(n2)。 5) 最坏时间复杂度 有时,算法中基本操作重复执行的次数随问题的输入不同而不同,通常分析最坏情况下的时间复杂度。 例,顺序查找算法 Status search ( int a[ ] ,int n ,int e ) { } for ( i = 0 ;i =n - 1 ;++i ) if ( e == a[i] ) return TRUE ; 最好 1 次比较,最坏 n 次比较,平均 (n+1)/2 次比较。 return FALSE ; 6) 算法的空间复杂度 关于算法的存储空间需求,类似于算法的时间复杂度, 我们采用空间复杂度作为算法所需存储空间的量度,记作: S(n)=O(f(n)) 课程的基本结构分为三个部分: 第一部分: 数据结构的基本概念(第1章)。 第二部分: 基本的数据结构,包括:线性结构——线性表、栈和队列、 串、 数组(第2~5章);非线性结构——树、 图(第6、 7章)。 第三部分: 基本技术,包括:查找技术与排序技术(第9、10章)。 数据结构 逻辑结构 存储结构 数据运算 (算法) 线性结构 (线性表、栈和队列、串) 非线性
您可能关注的文档
最近下载
- 2025《麻江县蓝莓产业发展现状调研分析报告》4900字.docx
- 2026年国网安全管理方案.docx VIP
- 2025年北京师范大学学科教学培养方案 .pdf VIP
- 初级消防试题及答案大全.docx VIP
- 核医学教学课件:血液和淋巴显像.ppt VIP
- 重庆市各地方周氏支族源流(1-170支族).doc VIP
- 建筑工程质量管理体系流程图.docx
- 淋巴系统核医学检查课件.ppt VIP
- (高清版)B-T 6003.1-2022 试验筛 技术要求和检验 第1部分:金属丝编织网试验筛.pdf VIP
- (已压缩)TUCST007-2020房屋建筑与市政基础设施工程施工安全风险评估技术标准.docx VIP
原创力文档

文档评论(0)