(二)算法基本特性,设计要求

讲讲算法是什么?算法是为了解决某个特定的问题,而设计出来的有限序列的指令,算法描述了求解问题的步骤。

算法具有五个基本的特性

输入,输出,有穷性,确定性,可行性

算法的输入是零至多个,算法可以不需要参数。

算法至少要有一个或者多个输出,算法一定需要输出的。

有穷性指的是算法执行有限的步骤后,将结束而不会陷入无尽的循环当中,同时每一个步骤讲究时间是否能够被接受。

确定性指的是每个步骤具有明确的含义,不会出现二义性。同样的条件,只能有唯一的输出结果且经过的路线只有一条。

可行性指每一个步骤都必须是可行的,算法描述的操作都是可以通过有限次基本操作来完成。

算法设计的要求

同一个问题可以有多种解决问题的算法。

算法要求正确:对于合法的输入,算法都会得到正确的结果,能够满足具体问题的需求。

算法要求可读:算法要求能够别人阅读,理解和交流。

算法要求健壮:对于不合法的输入,要做相关处理而不是导致程序异常甚至是奔溃。

算法要求时间效率高和存储量低:算法在设计过程中,需要存储数据,好的算法要求算法执行过程中最大的存储空间低,执行时间短效率高。

算法时间复杂度

语句总的执行次数T(n)是关于问题规模n的函数。

T(n)=O(f(n)),表示随着问题规模的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度。

平均情况和最坏情况

最坏情况运行时间是指运行时间不会比最坏运行时间长了。

平均运行时间从概率的角度来看,任何一种情况发生的可能性是相同的。

算法的空间复杂度

一个程序在机器执行的时候,程序本身的指令,常数,变量,输入数据,对数据操作的存储单元都需要进行存储。

在算法设计中,可以通过空间换时间的方式,但是这得看用在什么地方,以及对时间和空间的要求等。

备注:算法时间复杂度的计算

不管输入数据是多少,都执行固定次数,时间复杂度为O(1)。

for(int i=1;i<=n;i++)执行n次,这种时间复杂度为O(n)

for(int i=1;i<=n;i++){

for(int j=1;j<=n;j++)

}外层循环执行一次,里层循环就要执行n次,总的时间复杂度为O(n^2)

count=1;

while(count<n){

count=2*count;

}count大于等于n的时候结束循环,2^count>=n,从而计算出执行次数count,它的时间复杂度为O(logn)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值