- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计及分析2
第2章 算法分析基础
教学重点 大O符号;非递归算法的时间复杂性分析;最优算法 教学难点 问题的时间复杂性下界 教学内容
和
教学目标 知识点 教学要求 了解 理解 掌握 熟练掌握 输入规模与基本语句 √ 大O符号 √ 最好、最坏和平均情况 √ 非递归算法的时间复杂性分析 √ 递归算法的时间复杂性分析 √ 算法的空间复杂性分析 √ 问题的时间复杂性下界 √ 最优算法 √ 平凡下界 √ 判定树模型 √ 2.1 算法的时间复杂性分析
算法的时间复杂性分析是一种事前分析估算的方法,它是对算法所消耗资源的一种渐进分析方法。
所谓渐进分析是指忽略具体机器、编程语言和编译器的影响,只关注在输入规模增大时算法运行时间的增长趋势。
渐进分析的好处是大大降低了算法分析的难度,是从数量级的角度评价算法的效率。
2.1.1 输入规模与基本语句
输入规模是指输入量的多少,一般来说,它可以从问题描述中得到。
一个事实是:几乎所有的算法,对于规模更大的输入都需要运行更长的时间。
运行算法所需要的时间T是输入规模n的函数,记作T(n)。
要精确地表示算法的运行时间函数常常是很困难的,即使能够给出,也可能是个相当复杂的函数,函数的求解本身也是相当复杂的。
考虑到算法分析的主要目的在于比较求解同一个问题的不同算法的效率,为了客观地反映一个算法的运行时间,可以用算法中基本语句的执行次数来度量算法的工作量。
基本语句是执行次数与整个算法的执行次数成正比的语句,基本语句对算法运行时间的贡献最大,是算法中最重要的操作。
例2.1 int SeqSearch(int A[ ], int n, int k) //在数组A[n]中查找值为k的记录
{
for (int i = 0; i n; i++)
if (A[i] == k) break;
if (i == n) return 0; //查找失败,返回失败的标志0
else return (i + 1); //查找成功,返回记录的序号
}
解:算法的运行时间主要耗费在循环语句,循环的执行次数取决于待查找记录个数n和待查值k在数组中的位置,每执行一次for循环,都要执行一次元素比较操作。因此,输入规模是待查找的记录个数n,基本语句是比较操作(A[i] == k)。
例2. 对如下起泡排序算法,请找出输入规模和基本语句。
void BubbleSort(int r[ ], int n)
{
int bound, exchange = n - 1; //第一趟起泡排序的区间是[, n-1]
while (exchange != 0) //当上一趟排序有记录交换时
{
bound = exchange; exchange = 0
for (int j = 0; j bound; j++) //一趟起泡排序区间是[, bound]
if (r[j] r[j + 1]) {
int temp = r[j]; r[j] = r[j + 1]; r[j + 1] = temp; //交换记录
exchange = j; //记载每一次记录交换的位置
}
}
}
解:算法由两层嵌套的循环组成,内层循环的执行次数取决于每一趟待排序区间的长度,也就是待排序记录个数,外层循环的终止条件是在一趟排序过程中没有交换记录的操作,是否有交换记录的操作取决于相邻两个元素的比较结果,也就是说,每执行一次for循环,都要执行一次比较操作,而交换记录的操作却不一定执行。因此,输入规模是待排序的记录个数n,基本语句是比较操作(r[j] r[j + 1])。
例2. 如下算法实现将两个升序序列合并成一个升序序列,请找出输入规模和基本语句。
void Union(int A[ ], int n, int B[ ], int m, int C[ ] ) //合并A[n]和B[m]
{
int i = 0, j = 0, k = 0;
while (i n j m)
{
if (A[i] = B[j]) C[k++] = A[i++]; //A[i]与B[j]中较小者存入C[k]
else C[k++] = B[j++];
}
while (i n) C[k++] = A[i++]; //收尾处理,序列A中还有剩余记录
while
您可能关注的文档
- 第十四章线性规划及对偶问题.doc
- 第十章信息光学在光通信中及应用习题N.doc
- 第十章企业所得税作业及参考结果解析.doc
- 第十章双线性函数及正交空间辛空间.doc
- 第十章建筑安防系统及管理及维护.doc
- 第十章施工机械选择及机械化施工方案.doc
- 第十六章二次根式小结及复习.doc
- 第十章精神障碍病人及护理练习题doc.doc
- 第十章控制单元及设计.doc
- 第十章机械振动结果解析.doc
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第2课时 点的坐标特征.pptx
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第3课时 建立适当的平面直角坐标系.pptx
- 北师大版(2024)八年级数学上册课件 4.3 一次函数的图象 第1课时 正比例函数的图象及性质.pptx
- (人教A版数学选择性必修三)讲义第15讲7.1.1条件概率(学生版+解析).docx
- (人教A版数学选择性必修三)讲义第19讲8.1成对数据的统计相关性(8.1.1变量的相关关系+8.1.2样本相关系数)(学生版+解析).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第2课时 加减消元法.pptx
- (人教A版数学选择性必修一)2025年秋季学期讲义第01讲1.1.1空间向量及其线性运算(学生版+教师版).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第1课时 代入消元法.pptx
- 北师大版(2024)八年级数学上册课件 5.3 二元一次方程组的应用 第3课时 二元一次方程组的应用(3).pptx
- 北师大版(2024)八年级数学上册课件 5.4 二元一次方程与一次函数 第2课时 用二元一次方程组确定一次函数表达式.pptx
最近下载
- 清水混凝土模板施工工艺.pdf VIP
- 清水混凝土施工工艺质量控制与防治演示文稿.ppt VIP
- GB50164-2021混凝土质量控制标准.docx VIP
- 文旅项目景区景点城市农文旅融合项目稻田主题策划规划方案【旅游】【文旅】【农旅】【文旅规划】.pptx VIP
- 混凝土结构工程施工质量验收规范(英文版).pptx
- 心血管科中医护理课件.pptx VIP
- 混凝土结构工程施工质量验收规范培训课件.pptx VIP
- 《混凝土结构工程施工质量验收规范》局部修订的条文及.docx VIP
- 2012混凝土结构工程施工质量验收规局部修订.doc VIP
- 《混凝土质量控制标准》XX50164-2011正文精华版.doc VIP
文档评论(0)