标签:时间 数据 耗资源 数据结构 问题 英语 执行 实验环境 时间复杂度排序
对特定问题求解方法和步骤的一种描述,它是指令的有限序列。
每个指令表示一个或多个操作。
程序 = 数据结构 + 算法
根据该算法编制的程序在计算机上执行的耗时来度量。
将算法实现为程序,在计算机上运行,观测其耗时和占用存储空间大小。(实验环境的影响较大,结果与计算机软硬件有关,误差较大)
对算法所耗资源的估算。
算法运行时间 = 一个简单操作所需的时间 x 简单操作次数
? = Σ每条语句的执行次数 x 该语句执行一次所需的时间
? = Σ每条语句频度 x 该语句执行一次所需的时间(假定为单位时间)
? = Σ每条语句频度
若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n) = O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号),简称时间复杂度
只考虑算法中基本操作执行的次数。
基本语句指算法中执行次数最多的那个语句。(次数随输入数据集变化)
问题规模n:
最坏时间复杂度:最坏情况下,算法的时间复杂度。
平均时间复杂度:在所有可能输入实例在等概率出现的情况下,算法的期望运行时间。
最好时间复杂度:最好情况下,算法的时间复杂度。
考虑优先级:最坏时间复杂度 > 平均时间复杂度 > 最好时间复杂度
注:对于复杂的算法,需要将其拆分,然后利用加法、乘法法则计算其数量级。
加法法则:将复杂函数,能够拆分为两个函数的数量级和,则取数量级最大的那个。
T(n) = T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n)))
乘法法则:将复杂函数,能够拆分为两个函数的数量级积,则取两个函数的数量级积。
T(n) = T1(n) x T2(n) = O(f(n)) x O(g(n)) = O(f(n) x g(n))
各数量级时间复杂度排序(从小到大):
常数阶 | 对数阶 | 线性阶 | 线性对数阶 | 平方阶 | 立方阶 | ... | K次方阶 | 指数阶 |
---|---|---|---|---|---|---|---|---|
O(1) | O(log2^n) | O(n) | O(nlog2^n) | O(n^2) | O(n^3) | O(n^k) | O(2^n) |
算法所需存储空间的度量
S(n) = O(f(n))
注:n为问题的规模
标签:时间 数据 耗资源 数据结构 问题 英语 执行 实验环境 时间复杂度排序
原文地址:https://www.cnblogs.com/lisztomania/p/13086472.html