时间复杂度
时间复杂度排序:
O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^3) < O(2^n) ,O(n!)。。。
1.O(1):
所有的加减乘除时间复杂度都是O(1)。10000*100000的时间复杂度也是O(1)
2.O(n):
for循环,while循环(不使用二分搜索的)
3.O(n^2):
嵌套循环
while( i < n) {
i++;
j = i;
while(j < n) {
i++;
}
}
注意上面代码也是嵌套循环,但是由于下一个循环的j是接着上一个循环的i进行运算的,也就是说另一个循环中所有的i,j值都是接着上一个循环的。所以时间复杂度为O(n)。
4.O(n^3)
多项式:n^3 + n^2 + n,这个式子的时间复杂度是O(n^3)
5.O(log n)
用到二分搜索的时间复杂度就是O(log n)
6.O(n log n)
用到排序的比如冒泡排序时间复杂度就是O(n log n)
在算法中一般时间复杂度为O(1)的会被忽略。
空间复杂度
1.O(1):
任何单一的变量空间复杂度都为O(1).
2.O(n):
定义一个长度为n的数组
定义一个长度为n的set,map
用for循环生成一个长度为n的链表
3.O(n^2):
二位数组
一维数组每个元素存放一个长度为n的set或者map或者链表