时间复杂度T(n)和渐进时间复杂度O(n)是什么,该如何计算?

您所在的位置:网站首页 原神地图完成度是怎么算的 时间复杂度T(n)和渐进时间复杂度O(n)是什么,该如何计算?

时间复杂度T(n)和渐进时间复杂度O(n)是什么,该如何计算?

2024-07-09 23:49| 来源: 网络整理| 查看: 265

提示:本文属于基础篇,内容过多,如果对此已有了解,可以直接阅读加粗文字

算法的效率 = 运行的时间 + 所需的存储空间 ,我们暂时不考虑存储空间,如何度量运行时间是本文讨论的内容,我们首先要考虑到影响算法执行时间的主要因素:算法选用的策略 、问题的规模。一个特定算法的运行时间,它是问题规模(通常用整数n表示)的函数。

总结:一个算法的语句执行的次数称为语句频度或者时间频度,表示为T(n),n表示问题的规模;O(n)也是一个函数,它表示渐进时间复杂度,又叫大O表示法。

算法的量度记为:T(n)=O(f(n)) ——渐进时间复杂度

T(n)=O(f(n))的数学含义:存在两个常量C和N,当n≥N时,有T(n)≤C*f(n)

那么根据这个式子(过程不再描述)可以得出:

与T(n)相比,f(n)更为简洁,但依然会反映前者的增长趋势低次项可忽略

总结:一般地,若T(n)是有关n的一个多项式,则f(n)可由T(n)中的最高此项去掉系数所得。

例:设有函数T(n)=3n²-n+4,请证明T(n)=O(n²)。

证明:因为存在C=6,N=1,对所有的n≥N,0≤3n²-n+4≤6n²都是成立的,所以由大O的定义可得T(n)=O(n²)。**

T(n)=O(f(n)),这是大O表示的渐进时间复杂度,它表示随着问题规模n的增长,算法执行时间的增长率是相同的,而且f(n)比T(n)更为简洁,f(n)由T(n)“去粗取精”(低次项忽略,常系数忽略)得到。

那么如何估算一个指定算法的时间复杂度呢?

算法 = 控制结构 + 原操作(对固有类型数据的操作)

算法的执行时间T(n) = 原操作重复执行的次数 或 原操作的语句频度

下面我们使用上面的结论估算一个算法的时间复杂度:

void mult(int a[],int b[],int &c[],int n){ //以二维数组村粗矩阵元素,c为a和b的乘积 //语句频度 for(i=1;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3