算法效率的量度
时间复杂度
定义
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。
注意
- 时间复杂度考虑的只是对于问题规模n的增长率,则难以计算基本操作执行次数时,只需要求出它关于n的增长率即可。
- 基本操作可以选择多个,来综合比较两个算法。
- 如果输入数据集不同导致基本操作次数不同,可以估算它们的平均值(但有时不方便计算);还可以在最坏情况下估算最大的次数(普遍采用)。
空间复杂度
定义
作为算法所需存储空间的量度,记作S(n)=O(f(n)),其中n为问题的规模(或大小)。
注意
- 输入数据所占空间只取决于问题本身,和算法无关,则需要分析除输入和程序(代码等)之外的额外空间;否则要考虑输入。
- 原地工作的算法,输入数据所占空间和算法无关,同时该算法所占空间是个常量。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步