- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实用教程(C语言版) 中国水利水电出版社 4.算法的描述 为了表示一个算法,可以用多种不同的方法,常用的有自然语言、传统流程图、结构化流程图、N-S流程图等表示。本书采用C的描述语言实现对各种数据结构及算法的操作描述,算法是以函数形式描述,描述如下: 类型标识符 函数名(形式参数表) /*算法说明*/ { 语句序列 } 返回到本节目录 1.2.1 算法的概念 1.2.2 算法分析 在算法满足正确性的前提下,如何评价不同算法的优劣呢?通常主要考虑算法的时间复杂度和空间复杂度这两方面。一般情况下,鉴于运算空间(内存)较为充足,所以把算法的时间复杂度作为重点分析。 1. 时间复杂度(Time Complexity) 一个算法所需的运算时间通常与所解决问题的规模大小有关。问题规模是一个和输入有关的量,用n 表示问题规模的量,把算法运行所需的时间T表示为n的函数,记为T(n)。不同的T(n)算法,当n增长时,运算时间增长的快慢很不相同。一个算法所需的执行时间就是该算法中所有语句执行次数之和。当n逐渐增大时T(n)的极限情况,一般简称为时间复杂度。 返回到本节目录 当讨论一个程序的运行时间时,注重的不是T(n)的具体值,而是它的增长率。T(n)的增长率与算法中数据的输入规模紧密相关,而数据输入规模往往用算法中的某个变量的函数来表示,通常是f(n)。随着数据输入规模的增大,f(n)的增长率与T(n)的增长率相近,因此T(n)同f(n)在数量级上是一致的。记作: T(n)=O(f(n)) 其中,大写字母O为Order(数量级)的字头,f(n)为函数形式,如T(n)=O(n2)。 返回到本节目录 1.2.2 算法分析 返回到本节目录 1.2.2 算法分析 【例1.6】分析以下算法的时间复杂度。 x=0;y=0; for(k=1;k=n;k++) x++; (1)执行n次 for(i=1;i=n;i++) for(j=1;j=n;j++) y++; (2)执行n2次 解:T(n)= n+n2 T(n)=O(n2) 上述算法中的基本运算是语句(2),其执行频率为n2。则T(n)=n2=O(n2) 返回到本节目录 1.2.2 算法分析 【例1.7】分析以下算法的时间复杂度。 i=1; while(i=n) i=2*i; (1) 执行f(n)次 解:设语句(1)执行次数是f(n),则2f(n)≤n 得到T(n)=O(log2n) 返回到本节目录 1.2.2 算法分析 【例1.8】求两个矩阵相乘的函数的时间复杂度。 void mult(int a[], int b[], int c[]) {/*以二维数组存储矩阵元素,c为a和b的乘积*/ for(i=1;i=n;++i) (1) 执行n次 for(j=1;j=n;++j) (2) 执行n2次 { c[i,j]=0; for(k=1;k=n;++k) (3) 执行n3次 c[i,j]+=a[i,k]*b[k,j]; } } 解:嵌套循环为每层循环次数的乘积,因为是该函数为三重循环,所以时间复杂度为O(n3)。 返回到本节目录 1.2.2 算法分析 2. 空间复杂度(Space Complexity) 一个算法的空间复杂度是指程序运行开始到结束所需要的存储空间。包括算法本身所占用的存储空间、输入/输出数据占用的存储空间以及算法在运行过程中的工作单元和实现算法所需辅助空间。类似于算法的时间复杂度,算法所需存储空间的量度记作: S(n)=O(f(n)) 表示随着问题规模n的增大,算法运行所需存储量的增长率与f(n)的增长率相同。 返回到本节目录 1.2.2 算法分析 1.2.3 相关C语言知识回顾 1.数据类型 数据类型是和数据结构密切相关的一个概念,它最早出现在高级程序设计语言中,用以描述操作对象的特性。高级语言中的数据类型可分为两类:一类是原子类型,如C语言中的基本类型(整型、实型、字符型等)指针和空类型等不可再分的值;另一类是结构类型,如数组、结构体等通过若干成分(可以是原子类型或结构类型)构造而成的。 返回到本节目录 1.2.3 相关C语言知识回顾 (1)数组类型 数组中的每一个元素都属于同一个数据类型。数组有一维数组和多
您可能关注的文档
- 微型计算机原理及应用 -刘建成 02.ppt
- 微型计算机原理及应用 -刘建成 04.ppt
- 微型计算机原理及应用 -刘建成 05.ppt
- 微型计算机原理及应用 -刘建成 06.ppt
- 微型计算机原理及应用 -刘建成 07.ppt
- 微型计算机原理及应用 -刘建成 08.ppt
- 微型计算机原理及应用 -刘建成 10.ppt
- 微型计算机原理及应用 目录.ppt
- 微型计算机原理及应用(第二版) -何超 第3章.ppt
- 微型计算机原理及应用(第二版) -何超 第5章 总线和主板课件.ppt
- 数据结构实用教程(C语言版) -董凤服及算法 第2章 线性表.ppt
- 数据结构实用教程(C语言版) -董凤服及算法 第4章 串和数组.ppt
- 数据结构实用教程(C语言版) -董凤服及算法 第6章 图.ppt
- 数据结构实用教程(C语言版) -董凤服及算法 第7章 查找.ppt
- 数据结构实用教程(C语言版) -董凤服及算法 第8章 排序.ppt
- 数据结构算法——Visual C++ 6.0程序集 第2章.ppt
- 数据结构算法——Visual C++ 6.0程序集 第6章.ppt
- 数据结构算法——Visual C++ 6.0程序集 第7章.ppt
- 数据结构算法——Visual C++ 6.0程序集 第8章.ppt
- 数据结构算法——Visual C++ 6.0程序集 第9章.ppt
最近下载
- 电厂 电气维修培训课件.ppt VIP
- 电气设备操作与检修安全课件.ppt VIP
- 2025曲靖供电局及所属县级供电企业项目制用工招聘(55人)笔试备考试题及答案解析.docx VIP
- 雷克萨斯-Lexus RX-产品使用说明书-RX200t-AGL20L-AWTGZC2-RX200tOM_OM48E46C_01-1509-00.pdf VIP
- 基于Glauert法的风力机叶片设计设计说明书论文.docx VIP
- 企业法律知识培训讲座培训课件——房地产法律合规与风险管控(1).pptx VIP
- 2025南方电网保山供电局项目制用工招聘(3人)笔试备考试题及答案解析.docx VIP
- 大学生五四青年课活动策划书范文 - 172校园活动网.doc VIP
- 烹调工艺学全套教学课件.pptx
- 新时达电梯控制系统AS380S随机图纸RH0000741;国标20;非18芯;V1.0.pdf
文档评论(0)