时间复杂度和空间复杂度都用 O( )来表示。
时间复杂度:指在计算机科学与工程领域完成一个 算法 所需要的时间,是衡量一个算法优劣的重要 参数 。 时间复杂度 越小,说明该 算法 效率越高,则该算法越有价值。
简单讲,时间复杂度就是程序跑了多少次,但计算时间复杂度往往不需要精确的算出程序跑的次数
1.
如果没有说明N和M的大小,则时间复杂度为O(M+N)
2.
如果题目有特意说M和N的大小,则如下图
假如M远小于N,那么M就没必要计入时间复杂度(因为时间复杂度的计算只需要计算大概)
3.
做最坏打算!!
4.
排序次数:
N-1
N-2
N-3
......
1
准确:等差数列之和,N*(N-1)/2
时间复杂度:O(N^2)
5.
二分查找的时间复杂度
最好情况:只找了1次,O(1)
其他情况:假设找了X次才找到,总共有N个数,而每一次查找都会使N/2,除以X次2。
所以N/(2^X) == 1,1代表找得只剩下一个数了,该数就是我们要找到数或没找到
由上式得,
故时间复杂度为O(log2(下)N(上))
6.
7.
如图,可以看作右边的分支远小于左边的,于是以左边的次数为主(也就是每次递归的 Fib(n-1) )
空间复杂度:是对一个算法在运行过程中临时占用存储空间大小的量度
也就是额外占用的空间
1.
2.
3.