2、算法复杂度分析:从基础到应用

算法复杂度分析:从基础到应用

1 算法复杂度概述

在评估一个算法的优劣时,我们需要先明确评判的标准。因为在不同的场景下,适用的评判标准可能不同。不过,最基本的是算法必须正确,若算法不正确,其他特性也就失去了意义。虽然确定算法的正确性并非易事,但这里我们假设算法是正确的,重点关注算法的性能方面。

算法性能的一个重要方面是其对输入的依赖。对于程序,我们可以通过特定输入集运行并观察其行为,但算法无法直接运行和观察。因此,我们通过抽象输入集,将输入集的大小作为参数,使算法行为的描述成为该参数的函数,以此获得对算法行为的通用描述。

例如,我们想知道使用算法 A 对给定输入集进行排序所需的指令数。如果是对 100 个数字的集合 S 排序,我们能准确确定执行的指令数;但对于任意 100 个元素的集合排序所需的指令数,答案就不那么精确了,可能只能给出一个范围。

确定算法的计算复杂度,通常是通过检查算法的语法组件(即语句)来抽象地计算解决问题所需的语句数。语句计数能较为准确地反映执行时间,但这只是算法行为的一个重要方面,还有其他方面值得关注。

2 算法的时间和空间复杂度

2.1 时间复杂度和空间复杂度的定义

对于一个(正确的)程序,人们常关心其执行时间;对于算法,则关注其时间复杂度。程序可通过运行特定数据集来测量执行时间,而算法需采用语句计数的方法。

给定算法 A 和输入集的度量 n(通常是输入集的大小),算法 A 的时间复杂度定义为将 A 应用于任何度量为 n 的输入集时必须执行的原子指令或操作的数量 f(n)(更具体地说,这是最坏情况下的时间复杂度)。算法 A 的空间复杂度是指 A 进行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值