浅聊时间空间复杂度

187 阅读2分钟

时间复杂度:执行算法所消耗的时间

在长度为n数组中:
直接通过下标去访问元素,时间复杂度为O(1) 。
需要循环查找元素的时候,时间复杂度为O(n) 。
  
1.假如在一个数组里当我们知道元素的位置,一步到位就能访问到该元素,时间复杂度用大O表示法  标记为O(1)
 
2.而在数组中查找某元素,我们并不知道这个元素在数组的什么位置,假设数组的长度为n有可能该元素刚好在数组的下标
为0的位置(第一个位置)循环1次就匹配到了,时间复杂度为O(1)。
 
3.也有可能在数组下标为n-1的位置(最后一个位置)我们要循环n次才能匹配到该值,时间复杂度为O(n)
按照概率计算下来平均是n/2,即平均时间复杂度为O(n/2),但我们不应该只考虑平均值,我们要考虑最坏的情况,即假设
每次匹配的元素都在数组的最后一位,因为最坏情况是一种运行时间保证,运行时间不会再长了,如果我们没特别指定,
我们提到的运行时间都是最坏情况的运行时间,即在数组中查找某元素,时间复杂度为O(n); 
 

空间复杂度: 执行算法需要占用的内存空间

1.数组的长度基本上就是你的空间复杂度。比如你开了一个一维的数组,那么你的空间复杂度就是O(n),如果开了一个二维的
数组,数组长度是n^2,那么空间复杂度基本上就是n^2,如果是有递归的话,那么它递归最深的深度,就是你空间复杂度的
最大值。如果你的程序里边递归中又开了数组,那么空间复杂度就是两者的最大值