时间复杂度(数据结构笔记)

来源:互联网 发布:sunrise软件 编辑:程序博客网 时间:2024/06/15 15:43

时间复杂度(数据结构笔记)

时间复杂度通常指程序运行所需要的时间,一般我们分析最坏情况下的时间复杂度。
下面将简要分析几种常见循环的时间复杂度

时间复杂度为o(n2)的情况

第一种情况

for(int i = 0; i < n; i++)    for(int j = 0; j < n; j++)        operation();

毫无疑问,n+n++n=nn=n2

第二种情况

for(int i = 0; i < n; i++)    for(int j = 0; j < i; j++)        operation();

毫无疑问,1+2++n=n(n+1)2
以上两种情况时间复杂度均为o(n2).

时间复杂度为o(nlogn)的情况

for(int i = 0; i < n; i++)    for(int j = 0; j < i; i<<=1)        operation();

毫无疑问,外层循环为n,内层循环为logn,整段代码时间复杂度为o(nlogn

时间复杂度为o(n)的情况

for(int i = 0; i < n; i<<=1)    for(int j = 0; j < i; j++)        operation();

乍一看,可能有人认为时间复杂度为o(nlogn)或者o(log2n),用级数仔细计算可以得到,1+2+4+8++2log(n1)=n1,因此整段代码的时间复杂度为o(n)

原创粉丝点击