数据结构笔记
March 17, 2021
564
时间复杂度
算法的时间复杂度是一个函数。但不是计算时间,是操作的大概执行次数。
大O的渐近表示法
O(1)表示常数次。(常数用1来代替。)
1 |
|
以上f(n)=2*n*n+10;
O(n^2)
时间复杂度看最坏情况。
冒泡排序
由冒泡排序算法的定义可得时间复杂度是等差数列求和:
(n-1)+(n-2)+(n-3)…+2+1
即为(n*(n+1))/2,所以O(n^2)
当然,O(n^2)是最坏情况。
最好情况是当数列是有序状态时,时间复杂度是O(n);
二分查找
二分查找的情况只有两种:
- 找到了
- 范围缩小一半
所以最坏情况是范围缩小到为1时。
即:N/2/2/2/2…=1;
N=2^x;
x=logN;
所以**时间复杂度为O(logn)**。
按照函数图像可知,数字越大,上升越慢,但是二分的前提是有序数列。
斐波那契
真的非常慢。
2^0+2^1+2^2+2^3…..2^(n-1)=2^n-1;
所以时间复杂度为O(2^n)
- 本文作者:lybbor
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!