算法分析的目的:分析算法的效率以求改进
时间复杂度:算法中基本操作重复执行的次数的阶数(语句频度的首项去掉系数),记作T(n)=O(f(n))
例如:
下面时间复杂度为O(nlog2(n))
count=0; for(k=1;k<=n;k*=2)//O(log2(n)) for(j=1;j<=n;j+1)//O(n) count++;
下列算法段的语句频度为 和时间复杂度为O(n^3)
for(i=1;i<=n;i++) for (j=1;j<=i;j++) for ( k=1;k<=j;k++) x += delta;
常见排序方式时间复杂度:
最差时间分析 | 平均时间复杂度 | 稳定度 | 空间复杂度 | |
冒泡排序 | O(n^2) | O(n^2) | 稳定 | O(1) |
快速排序 | O(n^2) | O(nlog2(n)) | 不稳定 | O(log2(n))~O(n) |
选择排序 | O(n^2) | O(n^2) | 稳定 | O(1) |
二叉树排序 | O(n^2) | O(nlog2(n)) | 不稳定 | O(n) |
插入排序 | O(n^2) | O(n^2) | 稳定 | O(1) |
堆排序 | O(nlog2(n)) | O(nlog2(n)) | 不稳定 | O(1) |
希尔排序 | 0 | 0 | 不稳定 | O(1) |
(上表来自博客https://blog.csdn.net/zxm490484080/article/details/72210501
)