数据结构概述优秀PPT.ppt





《数据结构概述优秀PPT.ppt》由会员分享,可在线阅读,更多相关《数据结构概述优秀PPT.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构与算法基础数据结构与算法基础 第三部分:算法及效率度量第三部分:算法及效率度量n算法、算法的特性算法、算法的特性n算法好坏的评价标准算法好坏的评价标准n算法的性能度量方法算法的性能度量方法n渐进时间困难度渐进时间困难度n渐进空间困难度渐进空间困难度主要内容算法:对特定问题的求解过程的描述,是指令的算法:对特定问题的求解过程的描述,是指令的算法:对特定问题的求解过程的描述,是指令的算法:对特定问题的求解过程的描述,是指令的有限序列,也就是为解决某一具体问题而实行的有限序列,也就是为解决某一具体问题而实行的有限序列,也就是为解决某一具体问题而实行的有限序列,也就是为解决某一具体问题而实行的
2、具有有限的操作步骤。具有有限的操作步骤。具有有限的操作步骤。具有有限的操作步骤。程序是算法的实现,计算机依据程序逐步执行算程序是算法的实现,计算机依据程序逐步执行算程序是算法的实现,计算机依据程序逐步执行算程序是算法的实现,计算机依据程序逐步执行算法,实现对问题的求解。法,实现对问题的求解。法,实现对问题的求解。法,实现对问题的求解。定义:定义:定义:定义:一个有穷的指令集,这些指令为解决某一特定一个有穷的指令集,这些指令为解决某一特定一个有穷的指令集,这些指令为解决某一特定一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列。任务规定了一个运算序列。任务规定了一个运算序列。任务规定
3、了一个运算序列。算法算法五个特性:五个特性:五个特性:五个特性:输入输入输入输入 有有有有0 0个或多个输入个或多个输入个或多个输入个或多个输入输出输出输出输出 有一个或多个输出(处理结果)有一个或多个输出(处理结果)有一个或多个输出(处理结果)有一个或多个输出(处理结果)确定性确定性确定性确定性 每步定义都是准确、无歧义的每步定义都是准确、无歧义的每步定义都是准确、无歧义的每步定义都是准确、无歧义的有穷性有穷性有穷性有穷性 算法应在执行有穷步后结束算法应在执行有穷步后结束算法应在执行有穷步后结束算法应在执行有穷步后结束有效性有效性有效性有效性 每一条运算应足够基本能被执行每一条运算应足够基本
4、能被执行每一条运算应足够基本能被执行每一条运算应足够基本能被执行算法的特性算法的特性常用的设计方法:常用的设计方法:常用的设计方法:常用的设计方法:穷举法穷举法穷举法穷举法贪心法贪心法贪心法贪心法分治法分治法分治法分治法回溯法回溯法回溯法回溯法动态规划法动态规划法动态规划法动态规划法裁剪与分枝界限法裁剪与分枝界限法裁剪与分枝界限法裁剪与分枝界限法并行算法并行算法并行算法并行算法算法的分类算法的分类 事例学习:事例学习:事例学习:事例学习:选择排序问题选择排序问题选择排序问题选择排序问题 明确问题:明确问题:明确问题:明确问题:非递减排序非递减排序非递减排序非递减排序 解决方案:解决方案:解决方
5、案:解决方案:逐个选择最小数据逐个选择最小数据逐个选择最小数据逐个选择最小数据 算法框架:算法框架:算法框架:算法框架:for(intfor(int i=i=0;0;i n-i n-1;1;i+i+)/)/n n-1-1趟趟趟趟 从从从从a a i i 检查到检查到检查到检查到a a n-n-1;1;若最小的整数在若最小的整数在若最小的整数在若最小的整数在a a k k,交换交换交换交换a a i i 与与与与a a k k;细化程序:细化程序:细化程序:细化程序:程序程序程序程序 SelectSortSelectSort 算法设计过程算法设计过程 自顶向下,逐步求精自顶向下,逐步求精 voi
6、d selectSort(int a,const int n)/对对n个整数个整数a0,a1,an-1,按非递减依次排序按非递减依次排序 for(int i=0;i n-1;i+)int k=i;/从从ai检查到检查到an-1,找最小的整数找最小的整数,在在ak for(int j=i+1;j n;j+)if(aj 0)if(x 0)y=1;y=1;else if else if(x=0)(x=0)y=0;y=0;else else y=-1;y=-1;return y;return y;第一个层次第一个层次程序不包含语法错误程序不包含语法错误int sign(int x)int sign(i
7、nt x)int y;int y;if(if(x 1x 1)y=1;y=1;else if(x=0)else if(x=0)y=0;y=0;else else y=-1;y=-1;return y;return y;其次个层次其次个层次输入输入100 输出输出1输入输入0 输出输出0输入输入100 输出输出1int sign(int x)int sign(int x)int y;int y;if(x=1)if(x=1)y=1;y=1;else if(x=0)else if(x=0)y=0;y=0;else else y=-1;y=-1;return y;return y;第三个层次第三个层次输
8、入输入100 输出输出1输入输入1 输出输出1输入输入0 输出输出0输入输入-1 输出输出-1输入输入-100 输出输出-1int sign(int x)int sign(int x)int y;int y;if(x 0)if(x 0)y=1;y=1;else if(x=0)else if(x=0)y=0;y=0;else else y=-1;y=-1;if(x=0 x1234)if(x=0 x1234)y=0;y=0;return y;return y;第四个层次第四个层次全部可能的输入全部可能的输入 解决同一个问题存在多种算法,如何评估各种算法的解决同一个问题存在多种算法,如何评估各种算法
9、的解决同一个问题存在多种算法,如何评估各种算法的解决同一个问题存在多种算法,如何评估各种算法的好坏?好坏?好坏?好坏?运行算法所须要的计算机资源运行算法所须要的计算机资源运行算法所须要的计算机资源运行算法所须要的计算机资源时间和空间时间和空间时间和空间时间和空间 评价一个算法的优劣的重要依据看执行该算法的程序评价一个算法的优劣的重要依据看执行该算法的程序评价一个算法的优劣的重要依据看执行该算法的程序评价一个算法的优劣的重要依据看执行该算法的程序占用多少计算机资源占用多少计算机资源占用多少计算机资源占用多少计算机资源 程序所用算法运行时所要花费的时间代价程序所用算法运行时所要花费的时间代价程序所
10、用算法运行时所要花费的时间代价程序所用算法运行时所要花费的时间代价 程序中运用的数据结构占用的空间代价程序中运用的数据结构占用的空间代价程序中运用的数据结构占用的空间代价程序中运用的数据结构占用的空间代价 如何评价?如何评价?如何评价?如何评价?算法的后期测试:试验方法、仿真方法算法的后期测试:试验方法、仿真方法算法的后期测试:试验方法、仿真方法算法的后期测试:试验方法、仿真方法 算法的事前估计:分析的方法算法的事前估计:分析的方法算法的事前估计:分析的方法算法的事前估计:分析的方法算法效率的度量算法效率的度量n试验的方法:接受实际数据测试程序的执行时间;试验的方法:接受实际数据测试程序的执行
11、时间;n仿真的方法:模拟数据进行测试;仿真的方法:模拟数据进行测试;n在算法中的某些部位插装时间函数在算法中的某些部位插装时间函数n time()或者或者clock()n 测定算法完成某一功能所花费的时间。测定算法完成某一功能所花费的时间。n接受开发工具供应的时间测量工具接受开发工具供应的时间测量工具profile算法的后期测试算法的后期测试依次搜寻依次搜寻依次搜寻依次搜寻(Sequenial Search)(Sequenial Search)行行行行 int seqsearch(int a,const int n,int seqsearch(int a,const int n,const i
12、nt x)/a0,an-1 const int x)/a0,an-1 1 1 2 int i=0;2 int i=0;3 while(i n&ai!=x)3 while(i n&ai!=x)4 i+;4 i+;5 if(i=n)return-1;5 if(i=n)return-1;6 return i;6 return i;7 7 插装 clock()的计时程序 void TimeSearch()/在0.1000中搜寻0,10,90,100,200,1000 int a1001,n20;for(int j=0;j=1000;j+)aj=j;/a1=1,a2=2,for(j=0;j 10;j+)
13、nj=10*j;/n0=0,n1=10,n2=20 nj+10=100*(j+1);/n10=100,n11=200,n12=300.printf(%12s%12s%12sn,n,500000,1);forfor (j=j=0 0;j j 2020;j+j+)clock_tclock_t startstart,stop stop;start=clock start=clock()();long long count=500000count=500000;whilewhile(count-)(count-)intint k=seqsearchk=seqsearch(a,a,1001,1001,n
14、 n j j);stop=stop=clockclock()();double double runTimerunTime=stop =stop startstart;printfprintf(“%12d%12d%12.6fn”,nj,runTime,(“%12d%12d%12.6fn”,nj,runTime,double(runTime)/500000);double(runTime)/500000);程序测试结果输出程序在计算机上运行所需时间的影响因素程序在计算机上运行所需时间的影响因素程序在计算机上运行所需时间的影响因素程序在计算机上运行所需时间的影响因素算法本身选用的策略算法本身选用的
15、策略算法本身选用的策略算法本身选用的策略问题的规模问题的规模问题的规模问题的规模规模越大,消耗时间越多规模越大,消耗时间越多规模越大,消耗时间越多规模越大,消耗时间越多书写程序的语言书写程序的语言书写程序的语言书写程序的语言语言越高级,消耗时间越多语言越高级,消耗时间越多语言越高级,消耗时间越多语言越高级,消耗时间越多编译产生的机器代码质量编译产生的机器代码质量编译产生的机器代码质量编译产生的机器代码质量机器执行指令的速度机器执行指令的速度机器执行指令的速度机器执行指令的速度为便于比较算法本身的优劣为便于比较算法本身的优劣为便于比较算法本身的优劣为便于比较算法本身的优劣应解除其它影响算法效率的
16、因素应解除其它影响算法效率的因素应解除其它影响算法效率的因素应解除其它影响算法效率的因素希望软件执行时间可预料希望软件执行时间可预料 算法分析感爱好的不是具体的资源占用量,而是与具算法分析感爱好的不是具体的资源占用量,而是与具体的平台无关、具体的输入实例无关,且随着规模增长体的平台无关、具体的输入实例无关,且随着规模增长的值是可预料的。算法的事前估计的值是可预料的。算法的事前估计希望了解软件执行时间的变更趋势希望了解软件执行时间的变更趋势 与问题规模之间的关系,用确定的规模数据作为输入与问题规模之间的关系,用确定的规模数据作为输入时程序所需的基本操作的次数来描述时间效率时程序所需的基本操作的次
17、数来描述时间效率忽视细微环节忽视细微环节 完成一个基本操作所须要的时间应当与具体的被操作完成一个基本操作所须要的时间应当与具体的被操作数无关数无关 算法的困难性分析算法的困难性分析例例例例 以迭代方式求累加和的函数以迭代方式求累加和的函数以迭代方式求累加和的函数以迭代方式求累加和的函数行行行行 float sum(float a,const int n)1 2 float s=0.0;3 for(int i=0;i n;i+)4 s+=ai;5 return s;6 程序步确定方法程序步确定方法程序步确定方法程序步确定方法w w 插入计数全局变量插入计数全局变量插入计数全局变量插入计数全局变量
18、countcountw w 建表,列出个语句的程序步建表,列出个语句的程序步建表,列出个语句的程序步建表,列出个语句的程序步计算计算累加和累加和程序程序程序步数程序步数计算工作表格计算工作表格 语句执行的频度语句执行的频度语句执行的频度语句执行的频度 2n+32n+3程序的精确步数没有实际意义,程序步数的数量级别可以程序的精确步数没有实际意义,程序步数的数量级别可以反映程序的实质。反映程序的实质。n:一个特定算法的:一个特定算法的“运行工作量运行工作量”的大小,只依靠于问题的大小,只依靠于问题的规模(通常用整数量的规模(通常用整数量n表示)表示)f(n):算法中基本操作的执行次数,即它是问题规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 概述 优秀 PPT

限制150内