时间复杂度计算_案例1

时间复杂度

  同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。一个算法的时间开销记作:T(n),其中n表示算法的基本操作模块被重复执行的次数。算法的时间复杂度记做T(n)=O(f(n)),随着n的增大,算法执行时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。时间复杂度常用大O符号表述。这种用大写的O来代表算法的时间复杂度的记法叫"大O阶"记法。

算法的时间复杂度(大O阶)的计算方法为: 

1、用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,只保留高阶项。
3、如果最高阶项存在且不是1,则去除与这个项相乘的常数。

也就是当n增大到一定值后,对时间复杂度影响最大的就是n的幂次最高的项,其他的常数项和低幂次项都可以忽略不计。

在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数。例如:

 1 int n = 100000; //执行了1次
 2 for(int i = 0; i < n; i++){  //执行了n+1次
 3   for(int j = 0; j < n; j++) //执行了n*(n+1)次
 4   {
 5       printf("i = %d, j = %d", i, j); //执行了n*n次
 6   }
 7 }
 8 
 9 for(int i = 0; i < n; i++){  //执行了n+1次
10   printf("i = %d", i); //执行了n次
11 }
12 
13 printf("Done"); //执行了1次

时间复杂度:(常数可以省略不计算

1+n+1+n^2+n+n^2+n+1+n+1

=>2n^2+4n+4

=>n^2

时间复杂度=O(n^2)

猜你喜欢

转载自blog.csdn.net/AinUser/article/details/82906958