一 定义
衡量一个算法的性能,除了能实现需求之外。进阶就是考虑在算法运行过程中时间和资源的消耗。
因此,
时间复杂度:执行当前算法所消耗的时间;
空间复杂度:执行当前算法所需要占用的内存空间
二 计算
1 时间复杂度(使用O符号表示法,表示代码执行时间的增长变化趋势)
T(n)=O(f(n)) // f(n)表示每行代码执行次数之和,O表示正比例关系
2 空间复杂度 S(n)
三 常用的复杂度量级
1 时间复杂度(从上往下复杂性增加)
常数阶O(1):消耗的时间并不随某个变量n变化而变化
对数阶O(logN):当数据增大n倍,耗时增大logn倍(以2为底)。如二分查找
线性阶O(n):如n决定的for循环,消耗的时间随着n的变化而变化
线性对数阶O(nlogN):将时间复杂度为O(logN)的代码循环N遍,如归并排序
平方阶O(n²):把 O(n) 的代码再嵌套循环一遍
立方阶O(n³):3层N循环
K次方阶O(n^k):k层N循环
指数阶(2^n)
2 时间复杂度
O(1):所需要的临时空间并不随某个变量n变化而变化
O(n):如new了一个大小为n的数组,int[] m = new int[n];
原文:https://www.cnblogs.com/lyeeer/p/11799981.html