时间复杂度 空间复杂度

2019-09-18  本文已影响0人  雪飘千里

概念

时间复杂度和空间复杂度是用来衡量不同算法之间的优劣
时间复杂度:计算的不是算法运行的时间,而是算法运行执行语句的次数
空间复杂度:指一个算法在运行过程中,临时占用存储空间大小的度量,简单的说就是,被创建次数最多的变量,它被创建了多少次,那么这个算法的空间复杂度就是多少

量级以及计算方法

常用的时间复杂度量级

从下面的代码可以看到,在while循环里面,每次都将 i 乘以 2,乘完之后,i 距离 n 就越来越近了。我们试着求解一下,假设循环x次之后,i 就大于 2 了,此时这个循环就退出了,也就是说 2 的 x 次方等于 n,那么 x = log2n
也就是说当循环 log2n 次以后,这个代码就结束了。因此这个代码的时间复杂度为:O(log2n)

int i = 1;
while(i<n)
{
  i = i * 2;
}

上面从上至下依次的时间复杂度越来越大,执行的效率越来越低。

空间复杂度比较常用的有:

以归并排序为例,在合并过程中,每次都要比较交换,要比较n次,每次都创建一个临时变量,所以归并排序的空间复杂度为O(n)

上一篇 下一篇

猜你喜欢

热点阅读