算法Algorithm:一个计算过程,解决问题的方法
程序=数据结构+算法
一.时间复杂度
算法的时间复杂度是一个函数,它定性描述该算法的运行时间
时间复杂度分析:
- 只关注循环执行次数最多的一段代码
- 总复杂度等于最高阶项的复杂度,常量级可忽略
- 嵌套代码复杂度等于内外代码复杂度的乘积
简单快速判断方法:
- 确定问题规模n
- 循环减半过程——logn
- k层关于n的循环——n^k
常见的时间复杂度(按效率排序):
O(1)< O(logn)< O(n)< O(nlogn)< O(n^ 2)< O (n^ 2logn) < O (n^3)
二.空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度
空间复杂度的表示方法与时间复杂度完全一样:
- 算法使用了几个变量:O(1)
- 算法使用了长度为n的一维列表:O(n)
- 算法使用了m行n列的二维列表:O(mn)
空间换时间