时间复杂度

本文介绍了时间复杂度作为评估代码效率的基础,探讨了输入规模、运行环境和运行次数如何影响时间复杂度。通过实例分析了二分查找、寻找数组最大/最小值及归并排序等算法的时间复杂度,强调了Ο(1)、Ο(logn)、Ο(n)、Ο(nlogn)和Ο(n^2)等常见复杂度等级,并指出Ο(2^n)和Ο(n!)属于指数时间。理解这些概念对于优化算法和提升程序性能至关重要。

定义

时间复杂度是衡量一个代码好坏的基础:运行时间与占用空间。

输入规模和运行环境和运行次数是决定时间复杂度的因素。

如二分法查找0(logn)  所执行次数为a*logn

找数组中最大/小值0(n) 所执行次数为 b*n

归并排序算法0(nlogn)     所执行次数为c*nlogn

思路

 for (i=1; i<=n; i++)
         x++;
  for (i=1; i<=n; i++)
       for (j=1; j<=n; j++)
            x++;

 第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。

  Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。其中Ο(log2n)、Ο(n)、 Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2n)和Ο(n!)称为指数时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值