数据结构与算法(一)——时间复杂度

为什么需要时间复杂度分析?通过统计、监控,就能得到算法执行的时间和占用的内存大小,但是,这种统计方法。
摘要由CSDN通过智能技术生成

为什么需要时间复杂度分析?

通过统计、监控,就能得到算法执行的时间和占用的内存大小,但是,这种统计方法
有很多不足,例如:

  1. 测试结果依赖测试环境,例如测试PC的电脑的芯片从i7换为i5,那么运行时间就会增加
  2. 测试结果依赖测试数据规模,例如小规模的数据排序,插入排序比快速排序快

时间复杂度的表示方法

大O表示法(重要)

定义:当且仅当存在两个参数 c > 0 ,n0 > 0, 对于所有的 n >= n0 , 都有 f(n) <= cg(n),则
f(n) = O(g(n)),如图:

在这里插入图片描述

用大O表示法表示时间复杂度示例:

 int cal(int n) {
   
 int sum = 0;
 int i = 1;
 int j = 1;
 for (; i <= n; ++i) {
   
       j = 1;
       for (; j <= n; ++j) {
   
       sum = sum + i * j;
     }
 }
 return sum;
 }

假设上述代码,执行一行代码的时间为 t ,则花费的总时间为 (2*n^2+2*n+4)*t。当 n 非常大时,上述代码花费的时间
只取决于 n^2 ,即 T(n) = O(n2),上述代码的时间复杂度为O(n2)

简单说:大O表示法就是忽略掉公式中的常量、低阶、系数,只需要记录一个最大阶的量级

大Ω表示法(了解即可)

定义 :如果存在正数 c 和 n0 ,使得对所有的 n >= n0 ,
都有 f(n) >= cg(n),则 f(n) = Ω(g(n)) ,如图:

在这里插入图片描述

大θ表示法(了解即可)

定义:如果一个函数既在集合 O (g(n)) 中又在集合 Ω(g(n))
中,则称其为 θ(g(n))。也即,当上、下限相同时则可用大 θ 表示法,如图:

在这里插入图片描述

常用的时间复杂度量级

  1. 常数阶 O(1)

O(1)只是常量级时间复杂度的一种表示方法,并不是指只执行了一行代码。比如这段代码,即便有3行,它的时间复杂度也是O(1),

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值