时间复杂度和空间复杂度
/ / 点击 /时间复杂度:执行算法所需要的时间
空间复杂度:执行算法所需要的内存空间
时间复杂度的定义:一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得T(n)/f(n)的极限值(当n趋近于无穷大时)为不等于零的常数,则称f(n)是T(n)的同数量级函数
- 通常将O(1)、O(n)、O(logn)、O(n2)等分别叫做常量阶、线性阶、对数阶、平方阶等
- 推导大O阶方法:1.用常数1取代运行时间中的所有加法常数;2.修改后的运行次数函数中,值保留最高阶项;3.如果最高阶向存在且不是1,则去除与这个项相乘的常数
- 常数阶O(1):
1 | int sum=0,n=100; |
- 线性阶O(n):
1 | for(int i=0;i<n;i++){ |
- 对数阶O(logn):
1 | int num=1; |
- 平方阶O(n^2):
1 | for(int i=0;i<n;i++){ |
- 常用的时间复杂度按照耗费的时间从小到大依次是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2ⁿ)<O(n!)
全文完。