算法概念
-
算法(Algorithm):一个计算过程,解决问题的方法
-
Niklaus Wirth:”程序=数据结构+算法“
时间复杂度
-
时间复杂度是用来估计算法运行时间的一个式子(单位)。
-
一般来说,时间复杂度高的算法比复杂度低的算法慢。
-
常见的时间复杂度(按效率排序,logn即log2n)
O(1)<O(logn)<O(n)<<O(nlogn)<O(n^2)<O(n^2logn)<O(n^3)
-
复杂问题的时间复杂度
O(n!)、O(2^n)、O(n^n)……
如何简单快速地判断算法复杂度
-
快速判断算法复杂度(适用于绝大多数简单情况)
确定问题规模n
循环减半过程—>logn
k层关于n的循环—>n^k
-
复杂情况:根据算法执行过程判断
空间复杂度
-
空间复杂度:用来评估算法内存占用大小的式子
-
空间复杂度的表示方式与时间复杂度完全一样
算法使用了几个变量:O(1)
算法使用了长度为n的一维列表:O(n)
算法使用了m行n列的二维列表:O(mn)
-
“空间换时间”