数据结构学习笔记2

算法


算法和算法分析
算法:是为了解决某类问题而规定的一个有限长的操作序列

算法具有的五个特性:
有穷性:有限步骤,有限时间
确定性:不产生二义性
可行性:基本操作运算执行有限次来实现
输入:有零个或者多个输入
输出:有一个或者多个输出

评价算法优劣的基本准则:
正确性,可读性(易于理解,相互交流),健壮性(能对非法输出做出良好的回应),高效性(时间复杂度,空间复杂在度来衡量)

接下来介绍时间复杂度和空间复杂度:
先来说明两个概念:
问题规模:算法求解问题输入量的多少,是问题大小的本质表示
语句频度:一条语句重复执行的次数

常见的时间复杂度按数量级递增排列依次为:
常量阶O(1),
常量阶O(1),
对数阶O(long2n),
对数阶O(long2n),
线性阶O(n),
线性阶O(n),
线性对数阶O(nlong2n),
线性对数阶O(nlong2n),
平方阶O(n2),
平方阶O(n2),
立方阶O(n3),
立方阶O(n3),
k次方阶O(nk),
k次方阶O(nk),
指数阶O(2n)
指数阶O(2n)
最好时间复杂度:算法计算量可能达到的最小值
最坏时间复杂度:算法计算量可能达到的最大值
平均时间复杂度:算法在所有可能下,按输入实例以等概率出现,算法计算量的加权平均值

说明:一般情况人们只关心最坏情况下的时间复杂度,一般的时间复杂度,指的就是最坏时间复杂度

关于算法存储空间需求,类似于算法的时间复杂度,我们采用渐进空间复杂度作为算法所需存储空间的度量民间称空间复杂度,它也是问题规模n的函数,记作:

S(n)=O(f(n))
S(n)=O(f(n))
一般情况下,一个程序在机器上执行时,除了需要本身所用的指令,常数,输入数据外,还需要一些对数据进行操作的辅助存储空间,其中对于输入数据所占的具体存储量取决于问题本身,与算法无关,这样,只需要分析该算法在实现时所需要的辅助空间就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值