【CS.AL】算法复杂度分析 —— 渐进符号表示法


在这里插入图片描述

1000.01.CS.AL.1.3-算法基础-渐进符号表示法-Created: 2024-06-13.Thursday17:38

1 概述

渐进符号表示法用于描述算法的时间复杂度和空间复杂度,衡量算法的性能。它可以帮助我们分析和比较不同算法的效率,尤其是当输入规模变大时。常见的渐进符号包括大O符号(O)、Ω符号(Ω)、Θ符号(Θ)、o符号(o)和ω符号(ω)。

2 渐进符号详解

2.1 大O符号(O)

大O符号(Big O Notation) 用于描述算法在最坏情况下的时间复杂度或空间复杂度,表示在输入规模趋近无穷大时,算法的增长率上限。它帮助我们理解算法的效率上限。

定义:算法的时间复杂度为O(f(n)),如果存在正数c和n0,使得对所有n ≥ n0,算法的执行时间T(n)满足T(n) ≤ c * f(n)。

示例

  • 对于线性时间复杂度的算法,如简单的遍历数组,时间复杂度为O(n)。
  • 对于二分查找算法,时间复杂度为O(log n)。

表示法

  • O(1):常数时间复杂度。
  • O(n):线性时间复杂度。
  • O(n²):平方时间复杂度。
  • O(log n):对数时间复杂度。
  • O(n log n):线性对数时间复杂度。

2.2 Ω符号(Ω)

Ω符号(Big Omega Notation) 用于描述算法在最好情况下的时间复杂度或空间复杂度,表示在输入规模趋近无穷大时,算法的增长率下限。它帮助我们理解算法的最低效率。

定义:算法的时间复杂度为Ω(f(n)),如果存在正数c和n0,使得对所有n ≥ n0,算法的执行时间T(n)满足T(n) ≥ c * f(n)。

示例

  • 对于二分查找算法,最好情况是在第一次比较时就找到目标元素,其时间复杂度为Ω(1)。
  • 对于快速排序算法,最好情况是每次都能均匀地将数组分成两部分,其时间复杂度为Ω(n log n)。

表示法

  • Ω(1):常数时间复杂度。
  • Ω(n):线性时间复杂度。
  • Ω(n²):平方时间复杂度。

2.3 Θ符号(Θ)

Θ符号(Big Theta Notation) 用于描述算法在平均情况下的时间复杂度或空间复杂度,表示在输入规模趋近无穷大时,算法的增长率的紧确界限。它帮助我们理解算法的精确效率。

定义:算法的时间复杂度为Θ(f(n)),如果存在正数c1、c2和n0,使得对所有n ≥ n0,算法的执行时间T(n)满足c1 * f(n) ≤ T(n) ≤ c2 * f(n)。

示例

  • 对于简单的遍历数组,时间复杂度为Θ(n)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值