数据结构——算法的复杂度分析

简介: 这一节是对绪论的补充。复杂度的分析,在很多的OJ比赛中的作用很大,我们往往在做题前会事前估计和事后估计,但是一般都是事前估计。考研的人er这一块一定要掌握。算法的复杂度的分析还需要你们自己线下去进行学习。看完我的数据结构课程希望能对在数据结构学习的过程迷茫的同学带来帮助!!!

前言

这一节是对绪论的补充。复杂度的分析,在很多的OJ比赛中的作用很大,我们往往在做题前会事前估计和事后估计,但是一般都是事前估计。考研的人er这一块一定要掌握。算法的复杂度的分析还需要你们自己线下去进行学习。看完我的数据结构课程希望能对在数据结构学习的过程迷茫的同学带来帮助!!!

analysis of algorithms

很多人可能会用algorithms complexity analysis 算法复杂度分析(知道即可)

在这应该是用analysis of algorithms的概念

我们都常说一句话:条条大路通罗马,在去罗马的过程我们会有不同的道路,会有不同的交通工具。在自行车、步行和飞机的选择中,不同的道路到达的时间和用的资源不同带来不同的结果,于是我们提出了复杂度的概念。

image-20230201220335735.png

有限的资源下我们要控制时间,复杂度的分析就是为了能够选出最优的解。

(1)对于时间的分析 我们叫做时间复杂度

(2)对于资源的分析 我们叫做空间复杂度

我们就是分析一条路最高效的,而这条路就是数据结构和算法。

很浅显易懂的概念。而对于时间复杂度我们用大O来进行标记。

Big O复杂度标记符以及举例

假如有个数组:arr=[1,2,3,4,6,7,12313];之前说过数据结构就是对数组进行CRUD分析。

因为arr[0]=1,就相当于我们现在要查一个数就是1。

(0)查单个元素的值:O(1) :1就是时间T

image-20230201221713763.png

(1)那假如说我现在要查n个数字,不就是O(N)啰,即遍历这个数组。

image-20230201222150764.png

(2)假如现在我们的图copy了一份然后,每一个数都跟另一个表的数配对一遍,就是O(N^2)。还不是一一匹配,而是一个数字和另一张图的每一个数匹配。

这些知识点很重要,一定要记住。

复杂度比较函数图

在这我们要列出不同的复杂度,递归的案例就是阶乘所以时间复杂度很高。

image-20230201222714393.png

对数的复习

照顾一下数学不好的同学。

23=8 2?=8

x=by y=logbx

那log216=4;

这玩意有什么作用呢?

[1,2,3]是一个静态数组,当我们想要扩容时,我们只能重新增加一倍,即乘以2。每次扩容一被就是指数加1

第二个例子:我们现在要找一个人,即折半查找

image-20230201225637377.png

每次都是折一半,效率越高,折半查找的复杂度就是log2(N)。

看上图知,数越大的时候,越稳定

目录
相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
70 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
26天前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
1月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
33 4
|
1月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
20 0
数据结构与算法学习十四:常用排序算法总结和对比
|
1月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
1月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
22 0
|
1月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
1月前
|
算法
数据结构(复杂度)
数据结构(复杂度)
19 0
|
1月前
|
机器学习/深度学习 搜索推荐 算法
探索数据结构:初入算法之经典排序算法
探索数据结构:初入算法之经典排序算法
|
1月前
|
存储 机器学习/深度学习 算法
探索数据结构:入门及复杂度的解锁
探索数据结构:入门及复杂度的解锁

热门文章

最新文章