数据结构初学0(导论)

高效的程序 = 恰当的数据结构 +合适的算法

一、算法的特性
1、输入
算法具有0个或多个输入
2、输出
算法至少有1个或多个输出
3、有穷性
算法在有限的步骤之后会自动结束而不会无限循环
4、确定性
算法中的每一步都有确定的含义,,不会出现二义性 不会出现二义性
5、可行性
算法的每一步都是可行的


二、算法设计的准则
1、正确性
 算法对于合法数据能够得到满足要求的结果
 算法能够处理非法输入,,并得到合理的结果 并得到合理的结果
 算法对于边界数据和压力数据都能得到满足要求的结果
注意:
正确性是算法最需要满足的基本的准则,,但是作为 但是作为
计算机程序,,不可能无限制的满足这条准则 不可能无限制的满足这条准则。

2、可读性
算法要方便阅读,,理解和交流 理解和交流
3、健壮性
算法不应该产生莫名其妙的结果
4、高性价比
利用最少的时间和资源得到满足要求的结果


三、小结

1、算法是为了解决实际问题而设计的
2、数据结构是算法需要处理的问题载体
3、数据结构与算法相辅相成

程序 =  数据结构   +  算法


四、算法效率的度量
1、事后统计法
比较不同算法对同一组输入数据的运行处理时间
缺陷有:
为了获得不同算法的运行时间必须编写相应程序 运行时间严重依赖硬件以及运行时的环境因素算法的测试数据的选取相当困难
事后统计法虽然直观,,但是实施困难且缺陷多 但是实施困难且缺陷多,一般不予考虑


2、事前分析估算
依据统计的方法对算法效率进行估算影响算法效率的主要因素
算法采用的策略和方法
问题的输入规模
编译器所产生的代码
计算机执行速度


三、判断一个算法的效率时,,往往只需要关注操作数量的 往往只需要关注操作数量的最高次项,,其它次要项和常数项可以忽略 

其它次要项和常数项可以忽略。

1、算法的空间复杂度通过计算算法的存储空间实现

S(n)  = O(f(n))
其中,,n为问题规模 为问题规模,,f(n) )为在问题规模为 为在问题规模为n时所占用存储空间的函数 时所占用存储空间的函数
大O 表示 表示法同样适用于算法的空间复杂度
当算法执行时所需要的空间是常数时,空间复杂度为O(1)


2、多数情况下,,算法执行时所用的时间 算法执行时所用的时间更令人关注如果有必要,,可以通过 可以通过增加空间复杂度来降低时间复杂度
同理,也可以通过增加时间复杂度来降低空间复杂度在实现算法时需要分析具体问题对执行时间和空间的要求


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值