复杂度小窍门

又有两段算法T1(n)=O(f1(n))和T2(n)=O(f2(n))则有
T1(n)+T2(n)=maxO(f1(n),f2(n))
T1(n)*T2(n)=O(f1(n)f2(n))
例:
若T(n)为n的k阶多项式则,T(n)=O(pow(n,k))
对于for循环时间复杂度=循环次数
循环体代码的复杂度
对于if-else语句,结构复杂度取决于if的判断条件和两个分支的复杂度;三者取最大值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法的时间复杂度是用来衡量算法执行效率的一个重要指标,通常用大O记号(O notation)表示,它描述了随着输入数据规模增长,算法运行所需资源的增长趋势,而不考虑具体实现细节和常数因子。下面是常见的时间复杂度从小到大的一般排列: 1. **O(1)** 或 常数时间复杂度:算法的执行时间不随输入数据规模变化而变化,无论数据量如何,完成操作所需时间基本固定。 2. **O(log n)** 或 对数时间复杂度:算法的速度随着输入数据规模呈对数增长,例如二分查找、平衡搜索树等。 3. **O(n)** 或 线性时间复杂度:算法执行时间与输入数据规模成正比,是最基础的时间复杂度,如遍历数组或列表。 4. **O(n log n)** 或 线性对数时间复杂度:典型的例子有快速排序、归并排序,速度介于线性和平方之间。 5. **O(n^2)** 或 平方时间复杂度:最简单的循环嵌套结构,如冒泡排序、选择排序,数据规模翻倍会导致执行时间增加四倍。 6. **O(n^3)** 或 立方时间复杂度:更高阶的情况,如矩阵乘法的某些实现。 7. **O(2^n)** 或 指数时间复杂度:数据规模稍微增加就会导致执行时间大幅上升,比如穷举法求解所有可能组合。 8. **O(f(n))** 其他更复杂的函数形式,如多项式函数、递归函数等,具体取决于f(n)的增长速率。 需要注意的是,这只是理论上的分析,实际中的性能还会受到其他因素影响,比如硬件速度、缓存优化等。同时,在实际工程中,我们倾向于选择较低时间复杂度的算法,但也要考虑其实现难度、代码可读性等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值