算法的时间复杂度什么意思

什么是算法的时间复杂度 能不能通俗的讲一下 问题规模是什么 最好举个例子 抄的就别来了 谢谢 !

算法的时间复杂度通俗的讲就是执行算法所需要的时间(执行多少次赋值、比较、判断等操作)
为了方便比较,算法的时间复杂度计算的通常的做法是,从算法选取一种对于所研究的问题(或算法模型)来说是基本运算的操作,以其重复执行的次数作为评价算法时间。该基本操作多数情况下是由算法最深层环内的语句表示的,基本操作的执行次数实际上就是相应语句的执行次数。

再给你举个简单的例子吧:
for(int i = 0; i < n;++i)
;
这个循环执行n次 所以时间复杂度是O(n)

for(int i = 0; i< n;++i)
{
for(int j = 0; j< n;++j)
;
}
这嵌套的两个循环 而且都执行n次
那么它的时间复杂度就是 O(n^2)

时间复杂度只能大概的表示所用的时间
而一些基本步骤所运行的时间不同,但是由于很难精确无法计算,所以省略
如:
for(int i = 0;i < n;++i)
a = b;

for(int i = 0;i < n;++i)
;
这个运行的时间当然是第二个快,但是他们的时间复杂度都是 O(n) ,
由于a=b运算时间可以忽略不计,所以判断时间复杂度主要看循环的复杂度
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-02
时间复杂度表面的意思就是代码花费的时间,但是一般使用这个概念的时候,更注重的是随着数据量增长,代码执行时间的增长情况。一般认为一个基本的运算为一次运行算,例如加减乘除判断等等
例1和例2时间复杂度都可以简单认为是o(N),一般用时间复杂度的时候要取一个下限即可,不用那么精确,可能你认为例1是o(2N)而例2是o(n),但实际上这两者对于时间复杂度的作用来说没区别,前面已经说了,时间复杂度关注的是数据量的增长导致的时间增长情况,o(2N)和o(n)在数据量增加一倍的时候,时间开销都是增加一倍(线性增长)。
又例如两重循环的时间复杂度是o(N的平方),N扩大一倍,时间复杂度就扩大4倍。所以时间复杂度主要是研究增长的问题,一般效率较好的算法要控制在o(N)或者o(log2N)
第2个回答  2019-08-28
如果一个问题的规模是n,解决这一问题所需算法所需要的时间是n的一个函数T(n),则T(n)称为这一算法的时间复杂度。
第3个回答  2009-02-13
通俗的说时间复杂度就是
当问题规模为n时,所需运算量的数量级(一般只留下次数最高项,并舍去常数)

比如说用冒泡法对n个数排序,第一轮需要交换(n-1)次,第二轮需要交换(n-2次)……,总共需要进行的操作是
(n-1)+(n-2)+(n-3)...+1
=(1+n-1)(n-1)/2
≈n^2(次)
即时间复杂度为O(n^2)——n为问题规模

关于冒泡法:
http://baike.baidu.com/view/1663338.htm

一般用时间复杂度评价一个算法速度的快慢。
比如说冒泡法时间复杂度为O(n^2),快速排序法时间复杂度为O(nlogn)。那么一般来说,在同样的问题规模下,快速排序法比冒泡法速度要快。
第4个回答  2009-02-13
就是要算法要耗费的时间的一种评估方法

如同速度来评价跑路耗费的时间

简单情况复杂度的一般评估采用大0算法

因为计算速度很快

只有在指数更改的情况下才会对计算造成很大影响

因此大0算法考虑指数变化

如2n方的使用方法 使用n方来表示其复杂度本回答被提问者和网友采纳
相似回答