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);

相关推荐
Tiny番茄24 分钟前
leetcode 3. 无重复字符的最长子串
数据结构·python·算法·leetcode
Miraitowa_cheems6 小时前
LeetCode算法日记 - Day 68: 猜数字大小II、矩阵中的最长递增路径
数据结构·算法·leetcode·职场和发展·贪心算法·矩阵·深度优先
希赛网6 小时前
软考软件设计师常考知识点:(三)数据结构
数据结构·二叉树·字符串·软考·软件设计师·线性表
少许极端11 小时前
算法奇妙屋(五)-链表
数据结构·算法·链表
木子.李34712 小时前
数据结构-算法C++(额外问题汇总)
数据结构·c++·算法
程序员莫小特12 小时前
老题新解|计算2的N次方
开发语言·数据结构·算法·青少年编程·信息学奥赛一本通
十重幻想14 小时前
PTA6-1 使用函数求最大公约数(C)
c语言·数据结构·算法
青岛少儿编程-王老师14 小时前
CCF编程能力等级认证GESP—C++5级—20250927
java·数据结构·c++
胖咕噜的稞达鸭18 小时前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法
笑口常开xpr18 小时前
【C++】模板 - - - 泛型编程的魔法模具,一键生成各类代码
开发语言·数据结构·c++·算法