Java实现-数据结构 2.时间和空间复杂度

.如何衡量一个算法的好坏:时间复杂度和空间复杂度

算法效率分为时间效率和空间效率,时间效率称为时间复杂度,空间效率称为空间复杂度

时间复杂度

算法的时间复杂度是一个数学函数,它描述了算法的运行时间,一个算法执行耗费的时间,和这个算法当中语句的执行次数有关,语句执行次数越多,运行时间就多,成正比,算法中的基本操作执行次数,为算法的时间复杂度

大O的渐进表示法

找语句执行次数多的语句===找循环

语句执行次数:n^2+2n+10;

用N表示法表示时,只保留最高次项

时间复杂度T(n^2);

推到O阶方法

1.用常数1取代运行时间中的所有加法常数

2.再修改后的执行次数中,只保留最高阶项

3.如果最高项存在且不是1,则去除与这个项目相乘的常数,得到的结果就是O阶

时间复杂度 分为最好情况、最坏情况、平均情况

我们一般所说的时间复杂度是最坏情况下的时间复杂度

常见时间复杂度例题

语句执行次数:1+2n+1+M+1;

时间复杂度:O(n);

语句执行次数:1+m+n+1;

时间复杂度:O(m+n);

语句执行次数:102;

时间复杂度:O(1);

语句执行次数:array.length+array.length*(array.length-1)*3+2;

时间复杂度:O(n^2);

冒泡排序法是n^2;

二分查找:n/2^x=1,n=2^x,x=log2n;

时间复杂度:O(log2N);

递归的时间复杂度如何运算:递归的时间复杂度=递归的次数*每次递归后执行的次数

时间复杂度:O(n);

计算时间复杂度不要只记得循环次数,要关注具体的每一个语句,进行判断

F(n)=F(n-1)+F(n-2);

斐波那契递归数列的时间复杂度:

最坏情况下:遍历所有节点

O(2^n);

空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量,也使用大O渐进表示法

无论是空间复杂度还是时间复杂度,我们都应该结合代码的实现去做空间复杂度和时间复杂度的计算,一些常用的复杂度大小:O(logN) < O(N) < O(N*logN) <O(n^2);

相关推荐
柏木乃一1 小时前
双向链表增删改查的模拟实现
开发语言·数据结构·算法·链表
ylfhpy9 小时前
Java面试黄金宝典33
java·开发语言·数据结构·面试·职场和发展·排序算法
神里流~霜灭11 小时前
数据结构:二叉树(三)·(重点)
c语言·数据结构·c++·算法·二叉树·红黑树·完全二叉树
zh_xuan11 小时前
LeeCode 57. 插入区间
c语言·开发语言·数据结构·算法
巷北夜未央12 小时前
数据结构之二叉树Python版
开发语言·数据结构·python
手握风云-12 小时前
优选算法的妙思之流:分治——快排专题
数据结构·算法
G皮T13 小时前
【Python Cookbook】字符串和文本(五):递归下降分析器
数据结构·python·正则表达式·字符串·编译原理·词法分析·语法解析
柯ran14 小时前
数据结构|排序算法(一)快速排序
数据结构·算法·排序算法
pipip.14 小时前
搜索二维矩阵
数据结构·算法·矩阵
念_ovo15 小时前
【算法/c++】利用中序遍历和后序遍历建二叉树
数据结构·c++·算法