算法复杂度分析

复杂度一般分为空间复杂度时间复杂度

空间复杂度是指算法在运算过程中对内存空间占用的最大值。

时间复杂度是指算法在运算过程中对最大消耗的时间。

两种复杂度都是一种估算,估算的方式就是根据代码的逻辑,分析出对于复杂度的公式。

在时间复杂度上,主要记录的是带有变量的循环

比如for (i = 0; i < n; i ++) {...}可理解为O(n)。
而 x = n + 1; y = x + 1; z = x + y;虽然是三条语句,但是没有循环操作,所以理解为O(1)。

在空间复杂度上,主要记录的是带有变量的空间申请

比如int[n] x;可以理解为O(n)。
而 int x; int y; int z;虽然是三个变量,但是没有变化的申请操作,所以理解为O(1)。

求解算法的时间复杂度的具体步骤是

⑴ 找出算法中的基本语句;

算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。

⑵ 计算基本语句的执行次数的数量级;

只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。

⑶ 用大Ο记号表示算法的时间性能。

将基本语句执行次数的数量级放入大Ο记号中。

如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。


具体参考:算法的时间复杂度和空间复杂度-总结


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值