算法_2022_时间&空间复杂度

logn是什么意思_时间复杂度 O(log n) 意味着什么?

算法的时间与空间复杂度(一看就懂)

 

时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。

空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

1、时间复杂度

一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大是,T(n)/f(n)的极限值为不等于零的常熟,则称f(n)是T(n)的同数量级函数,记作T(n )= O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。

复杂度量级(按数量级递增)

  • 常量阶O(1)
  • 对数阶O(logn)
  • 线性阶O(n)
  • 线性对数阶O(nlogn)
  • 平方阶O(n^2)、立方阶O(n^3) \cdots k次方阶O(n^k)
  • -----------------上为多项式量级-------下为非多项式量级
  • 指数阶O(2^n)
  • 阶乘阶O(n!)

2、空间复杂度 

空间复杂度比较常用的有:O(1)、O(n)、O(n²)

3、应用

排序:十大基本算法

排序方法平均情况最好情况最坏情况空间复杂度稳定性
冒泡排序 O(n^2) O(n) O(n^2) O(1) 稳定
选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定
插入排序 O(n^2) O(n) O(n^2) O(1) 稳定
希尔排序 O(n^(1.3—2)) O(n^1.3) O(n^2) O(1) 不稳定
归并排序 O(n*log2(n)) O(n*log2(n)) O(n*log2(n)) O(n) 稳定
快速排序 O(n*log2(n)) O(n*log(n)) O(n^2) O(nlog2n) 不稳定
堆排序 O(n*log2(n)) O(n*log2(n)) O(n*log2(n)) O(1) 不稳定
计数排序 O(n+k) O(n+k) O(n+k) O(n+k) 稳定
桶排序 O(n+k) O(n) O(n^2) O(n+k) 稳定
基数排序 O(n*k) O(n*k) O(n*k) O(n+k) 稳定
 
posted @ 2022-07-19 11:48  素染年华  阅读(54)  评论(0编辑  收藏  举报