【算法学习】时间复杂度

在学习算法之前,要明白一个概念,叫做时间复杂度。

1. 时间复杂度的概念

在初学代码时,我们的代码每次点运行后很快就能得到结果,因此我们对于这些代码的复杂度并没有什么认识,但随着我们学习的算法越来越深入,对于一些运算量较大的场景,尤其是在学习过程中用到三重以上的循环遍历,会发现代码执行的效率非常低,因此我们要引入时间复杂度的概念。

时间复杂度是一个函数,用来描述某段代码运行所需要的时间,通常用大O表示。

2. 时间复杂度的重要性

在运行小量数据的计算算法程序时,不同时间复杂度并不会体现出较大的差别,而随着运算量的提升, 不同时间复杂度的代码会使代码运行时间有数量级级别的差别。

3. 时间复杂度的计算

1. 某单个计算,如下,时间复杂度为O(1):

x = 1

2. 循环遍历中,单层循环遍历,时间复杂度为O(n),此时的就是列表的长度 n = length(list1) = 3

list1 = [1, 2, 3]
for i in list1:
    print(i)

3. 在多重循环遍历中,有m重循环,时间复杂度就是O(n^m),下面这个代码中,是两层循环,时间复杂度就是O(n^2)

list1 = [1, 2, 3]
list2 = [1, 2, 3, 4]
for i in list1:
    for j in list2:
        print(i + j)

4. 在树算法中,常常通过一个判断就会排除掉其中一半的选项,类似数学上的二分法,时间复杂度就是O(log2(n))。

5. 多重算法中,包含一个三重遍历,单遍历,此时的时间复杂度为O(n^3+n^2+n),但随着运算数据量的增大,我们会选择只保留优先级最高的那个。

时间复杂度优先级排序:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n),也就是随着运算数据量n的增大,消耗时间的排序。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值