算法复杂度是什么?

本文探讨了算法效率的关键因素——时间复杂度和空间复杂度,介绍了渐进表示法O(n), Ω(n), Θ(n)的应用,并列举了常见复杂度实例。此外,提供了复杂度分析的窍门,如嵌套情况下的复杂度计算,帮助读者理解如何选择和优化算法。
摘要由CSDN通过智能技术生成

概述

解决问题方法的效率,与算法的巧妙程度和所占的空间大小是有关系的。算法笨拙,消耗的时间就相对较多;空间占用过高,可能导致程序最终没有结果就已经崩溃。

复杂度

空间复杂度S(n)——根据算法写成的程序在执行时占用存储单元的长度

时间复杂度T(n)——根据算法写成的程序在执行时消耗时间的长度

复杂度的渐进表示法

为什么我们常看到的复杂度表示是O(n),这就是复杂度的渐进表示法

O(n)        表示复杂度的最小是上界

Ω(n)        表示复杂度的最大下界

Θ(n)        表示既是复杂度的上界,又是复杂度的下界

常见复杂度量级

函数由上至下,时间复杂度越来越大

作为一个程序员,如果看到一个复杂度是n^{2},第一个想法就是是否能降成n\log n

输入规模n
函数12481632
1111111
\log n012345
n12481632
n\log n0282464160
n^{2}1416642561024
n^{3}1864512409632768
2^{n}2416256655364.29*10^{9}
n!1224403262.09*10^{12}2.6*10^{37}

 

复杂度分析窍门

如果有两段算法,我们知道两端算法的复杂度上界是O(f1(n))、O(f2(n))

        当把这两个算法没有嵌套时,复杂度是max(O(f1(n)),O(f2(n)))

        当两个算法有嵌套时,复杂度是O(f1(n)*f2(n))

一个for循环的时间复杂度=循环次数*循环体代码复杂度

if else结构的复杂度,取决于if的条件复杂度、两个分支的复杂度,三者中复杂度最大的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值