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

相关推荐
positive_zpc2 小时前
进阶数据结构图——关键路径(四)
数据结构·图论·关键路径
孙克旭_2 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
Chester_19993 小时前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
旖旎夜光3 小时前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚3 小时前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
Chester_199912 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
专注仿真17 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
间歇性努力持续性发呆的野生快乐选手18 小时前
高级数据结构:树状数组
数据结构
每周报刊1 天前
竞速座舱级视界:爱攻 AGP497UCZD 超宽 QDOLED 显示器解析
数据结构·游戏·计算机外设
小星星闪亮登场1 天前
图论--最小生成树(内含二分图)
数据结构·算法·图论·迭代加深·图搜索算法