一、数据结构与算法
数据结构(存储)
算法(操作)
程序=数据的存储+数据的操作+计算机语言
二、衡量算法的标准
1、时间复杂度
大概程序要执行的次数,而非执行的时间;一般来说,时间复杂度高的算法比复杂度低的算法慢。
- 常见的时间复杂度效率排序:
O(1)>O(Logn)>O(n)>O(nlogn)>(n**2)>(n2logn)>O(n**3)>...,其中O(logn)见于执行次数循环减半的算法中,如:
while n>1:
n=n/2
print('awsl!')
- 复杂问题的时间复杂度:
O(n!)、O(2**n)、O(n**n)
- 如何快速判断算法复杂度(适用于绝大多数的简单情况):
(1)确定问题规模
(2)循环减半过程——logn
(3)k层关于n的循环——n**k
- 复杂情况:根据算法执行过程判断
2、空间复杂度
算法执行过程中大概所占有的最大内存。
空间复杂度的表示方法与时间复杂度完全一样,如:
算法使用了一个变量:O(1)
算法使用了一个长度为n的列表:O(n)
算法使用了一个m行n列的矩阵:O(mn)
由于空间复杂度对算法效率影响不大,因此我们惯用原则是“空间换时间”,即保证时间复杂度最低为优先考虑。