数据结构(二):算法及其描述Word文件下载.docx

上传人:b****9 文档编号:18890051 上传时间:2023-01-02 格式:DOCX 页数:3 大小:17.66KB
下载 相关 举报
数据结构(二):算法及其描述Word文件下载.docx_第1页
第1页 / 共3页
数据结构(二):算法及其描述Word文件下载.docx_第2页
第2页 / 共3页
数据结构(二):算法及其描述Word文件下载.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构(二):算法及其描述Word文件下载.docx

《数据结构(二):算法及其描述Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构(二):算法及其描述Word文件下载.docx(3页珍藏版)》请在冰豆网上搜索。

数据结构(二):算法及其描述Word文件下载.docx

确定性:

对于每种情况下算法应该执⾏的操作,在算法中都应该有明确的规定,使算法的执⾏者或阅读者能够明确其含义及如何执⾏。

并且在任何条件下,算法只能由⼀条执⾏路径。

也就是说,对于任意⼀组给定的合法输⼊值,算法要执⾏的操作是确定的。

可⾏性:

算法中的所有操作都必须⾜够基本,都可以通过已经实现的基本操作运算有限次实现。

有输⼊:

作为算法加⼯对象的量值,通常体现为算法中的⼀组变量。

有些输⼊需要在算法执⾏中给出,⽽有些算法看似没有输⼊,实际上已经内嵌在代码中。

有输出:

输出是与输⼊由确定关系的⼀组量值,是算法进⾏信息加⼯后的到的结果,这种确定关系就是算法的功能。

2、算法描述

我们有许多⽅法来描述⼀个算法,如:

设计⼀个算法:

求解⼀元⼆次⽅程组

我们分别⽤⽂字描述和C/C++语⾔来描述设计的算法:

语⾔描述:

1.计算d=b*b-4*a*c

2.如果d>

0,则转第5步

3.如果d=0,则转第9步

4.如果d<

0,则转第12步

5.计算x1=(-b+sqrt(d))/(2*a)

6.计算x2=(-b-sqrt(d))/(2*a)

7.显⽰x1和x2的值

8.转第13步

9.计算x=(-b)/(2*a)

10.显⽰x的值

11.转第13步

12.显⽰没有实根

13.算法结束

C/C++语⾔描述

voidsolution(floata,floatb,floatc){floatd,x1,x2,x;

d=b*b-4*a*c;

if(d>

0){

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

pr两int个f("

实根是:

x1=%f,x2=%f\n"

x1,x2);

}

elseif(d==0){

x=(-b)/(2*a);

pr⼀int个f("

x=%f\n"

x);

else{

pr不int存f("

在实根\n"

);

从上⾯的两个例⼦我们可以看出⽤C/C++来描述的算法结构更清晰(编写的程序结构化更⾼,对d的三种不同情况的处理⼀⽬了然)。

3、算法分析

在⼀个算法设计好后,还需要对其进⾏分析来确定⼀个算法的好坏。

算法设计的⽬标

1.正确性:

要求算法能够正确地预先规定的功能和性能要求。

这是最重要也是最基本的标准。

2.可使⽤性:

要求算法能够⽅便地使⽤,对⽤户要友好。

3.可读性:

算法应该易于⼈地理解。

为了达到这个要求,算法的逻辑必须是清晰的、简单的,代码应该是结构化的。

4.健壮性:

算法应该具有很好的容错性,能够对不合理的数据进⾏检查,不经常出现异常中断或者死机的现象。

5.⾼效率和低存储量

算法效率分析

通常由两种衡量算法效率的⽅法:

事后统计法和事前分析估算法。

事后分析法存在以下缺点:

1.必须执⾏程序

2.存在其他因素掩盖算法本质所以我们⼀般采⽤事前分析法。

⼀般来说,⼀个程序的运⾏速度不仅和算法有关,还和运⾏程序的计算机和所处计算机环境有关。

所以我们需要撇开这些计算机软件、硬件有关的

因素,仅考虑算法本⾝的效率⾼低。

⼀个算法是由控制结构(顺序、分⽀和循环)和原操作(固有的数据类型的操作,或者可以理解为分⽀和循环⾥要执⾏的操作)构成的。

为了⽐较同⼀问题的不同算法,通常从算法中选取⼀种对所研究的问题来说是基本运算的原操作,算法执⾏的时间⼤致为原操作的执⾏时间和被执

⾏的次数的乘积。

显然,在⼀个算法中,执⾏原操作的次数越少,其运⾏时间也就相对地越少;

执⾏的原操作次数越多,其运⾏时间也就相对地越多。

所以通常把算法中执⾏原操作地次数称为算法地时间复杂度,也就是说,⼀个算法地时间复杂度就是指其原操作在算法中反复执⾏的次数。

算法中基本运算次数(原操作)T(n)是问题规模n的某个函数,记作:

"

O"

的定义为:

若f(n)是正整数n的⼀个函数,则T(n)=O(f(n))表⽰存在⼀个正整数M,使得当n>

=n0时都满⾜

也就是说,我们只需要求出f(n)的最⾼阶,⽽忽略其低阶项和常系数,例如:

算法存储空间分析

⼀个算法的存储量包括输⼊数据所占空间、程序本⾝所占空间和辅助变量所占空间。

在对算法进⾏存储空间分析时,只考虑辅助变量所占空间。

所以,空间复杂度是对⼀个算法在运⾏过程中临时占⽤的存储空间⼤⼩的量度。

与时间复杂度类似,空间复杂度也是问题规模n的函数,也以数量级的形式给出,记作:

若所需额外空间相对于输⼊数据量来说是常数,则称此算法为原地⼯作或就地⼯作。

若所需存储量依赖于输⼊,则通常按最坏的情况考虑。

转载⾃:

数据结构教程(第⼆版)李春葆等编著

清华⼤学出版社

ISBN:

978-7-302-14229-4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1