【数据结构】数据结构前置知识

这里写目录标题

  • 基本概念与术语
    • 数据
    • 数据元素
    • 数据项
    • 数据对象
    • 数据结构
  • 逻辑结构和物理结构
    • 物理结构
      • 顺序存储结构
      • 链式存储结构
    • 逻辑结构
      • 集合结构
      • 线性结构
      • 树形结构
      • 图形结构
  • 算法
    • 时间复杂度和空间复杂度
      • 大O的渐进表示法
      • 时间复杂度
        • 常数阶
        • 线性阶
        • 对数阶
        • 平方阶
        • 常见时间复杂度
      • 空间复杂度
    • 最好情况与平均情况于最坏情况

基本概念与术语

概念皆来自于《大话数据结构》。

数据

数据的概念:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别并输入给计算机处理的符号集合。
其实就是可以输入到计算机中,可以被计算机处理的字符。像文件,图像,声音,数字等等都是可以通过编码转换为字符来处理。

数据元素

数据元素的概念:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也称为记录。

就像数学中由多个集合(子集合)构成的集合。子集就像数据元素一样

数据项

数据项概念:一个数据元素可以由若干个数据项组成。
数据项就像集合中的元素。

数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。

关系
用∈代替一下‘包含于’关系
数据项∈数据元素∈数据对象∈数据

数据结构

数据结构概念:是互相之间存在一种或多种特定关系的数据元素的集合。

逻辑结构和物理结构

这是根据视点来区分的数据结构。

物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式。

顺序存储结构

是把数据元素存放在地址连续的存储单元里,其数据间的逻辑结构关系和物理结构关系是一致的。

链式存储结构

是把数据元素存放在任意位置的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

逻辑结构

是指数据对象中数据元素之间的相互关系。

集合结构

集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。

线性结构

线性结构中的数据元素之间是一对一的关系。

树形结构

树形结构中的数据元素之间存在一种一对多的层次关系。

图形结构

图形结构中的数据元素是多对多的关系。

算法

算法的定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列。并且每条指令表示一个或多个操作。
算法五大特性:输入,输出,有穷性,确定性,可行性。

当多个算法都可以解决问题(在保证了正确性、可读性、健壮性),我们一般要考虑算法的时间效率,空间效率。我们就要用时间复杂度和空间复杂度来衡量。

时间复杂度和空间复杂度

其实我们要求时间复杂度就把语句执行次数给加起来表示为一个函数,空间复杂度开辟空间次数加起来表示为一个函数。然后将函数由大O的渐进表示法来表示。求得的就是复杂度。

我们通常使用大O的渐进表示法来表示时间复杂度和空间复杂度。

大O的渐进表示法

规则:
1.用常数1来取代运行时间中的所有加法常数;
2.在修改后的运行次数函数中,只保留最高阶项;
3.如果最高阶项存在且系数不为1,则将系数修改为1。

时间复杂度

常数阶
int n = 100;
int sum = (n+1)*n/2;

这个高斯公式求和就是函数为3,常数都表示为1,大O渐进法(时间复杂度)表示就是O(1)。

线性阶
int n = 100;
int sum = 0;
for(int i = 0; i < n; i++){
	sum += i; 
} 

这个求和就是函数为n+2,保留最高阶,大O渐进法(时间复杂度)表示就是O(n)。

对数阶
int count = 1;
while(count < n){
	count *= 2;
}

这个就是函数为logN+1,保留最高阶,大O渐进法(时间复杂度)表示就是O(logN)。

平方阶
for(int i = 0; i < n; i++){
	for(int j = 0; j < n; j++){
		System.out.print("0 ");
	}
}

这个的函数为nn + 1,保留最高阶,大O渐进法(时间复杂度)表示就是O(nn)。

常见时间复杂度

O(1) < O(logN) < O(N) < O(NlogN) < O(NN) < O(2^N) < O(N!) < O(N*N)

空间复杂度

空间复杂度和时间复杂度求法完全一样,只不过是将执行次数变为开辟空间次数。

int factorial(int N) {
 return N < 2 ? N : factorial(N-1)*N;
}

如上面代码每一次调用都要开辟一次,递归了N次。空间复杂度就是O(N)。

最好情况与平均情况于最坏情况

最好情况就是当前要解决的问题完全契合当前算法。像写一个冒泡排序,给的数组本身就是有序的,此时直接返回值时间复杂度就是O(1)。

平均情况就是所有情况中最有意义的,因为它是期望的运行时间。

最坏情况,一般不说明我们像上面将诉的方法求的复杂度一般是最坏情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/760757.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言--vs使用调试技巧

1.什么是bug? 1.产品说明书中规定要做的事情&#xff0c;而软件没有实现。 2.产品说明书中规定不要做的事情&#xff0c;而软件确实现了。 3.产品说明书中没有提到过的事情&#xff0c;而软件确实现了。 4.产品说明书中没有提到但是必须要做的事情&#xff0c;软件确没有实…

vue 组件el-tree添加结构指示线条

效果展示: 注意&#xff1a;组件中需要添加:indent"0" 进行子级缩进处理&#xff0c;否则会出现子级缩进逐级递增 :expand-on-click-node"false" 设置点击箭头图标才会展开或者收起 代码&#xff1a; <el-tree class"tree filter-tree" :da…

数据恢复篇:如何在电脑上恢复已删除和丢失的音乐文件

尽管流媒体网络非常流行&#xff0c;但许多人仍然选择将音乐下载并保存在 PC 本地。这会使文件面临丢失或意外删除的风险。 幸运的是&#xff0c;您可以使用数据恢复软件恢复已删除的音乐和其他文件类型。这篇文章讨论了这些解决方案以及如何使用奇客数据恢复检索丢失的音乐文…

【SpringCloud】Eureka源码解析 下

eurkea是一个服务发现与注册组件&#xff0c;它包含客户端和服务端&#xff0c;服务端负责管理服务的注册信息&#xff0c;客户端用于简化与服务端的交互。上一章分析了eureka的服务注册&#xff0c;这一章来分析eureka的心跳机制 参考源码&#xff1a;<spring-cloud.versi…

科普文:八大排序算法(JAVA实现)+ 自制动画 (袁厨的算法小屋)

我将我仓库里的排序算法给大家汇总整理了一下&#xff0c;写的非常非常细&#xff0c;还对每个算法制作了动画&#xff0c;一定能够对大家有所帮助&#xff0c;欢迎大家阅读。另外我也对 leetcode 上面可以用排序算法秒杀的算法题进行了总结&#xff0c;会在后面的文章中进行发…

OpenCV 调用自定义训练的 YOLO-V8 Onnx 模型

一、YOLO-V8 转 Onnx 在本专栏的前面几篇文章中&#xff0c;我们使用 ultralytics 公司开源发布的 YOLO-V8 模型&#xff0c;分别 Fine-Tuning 实验了 目标检测、关键点检测、分类 任务&#xff0c;实验后发现效果都非常的不错&#xff0c;但是前面的演示都是基于 ultralytics…

计算机组成原理——寄存器

文章目录 1. 寄存器 2. 带寄存器的加法器 3. 时钟信号与计算速度 1. 寄存器 上一篇D触发器可以在时钟上沿存储1位数据。如果想存储多个位&#xff08;bit&#xff09;的数据&#xff0c;就需要用多个D触发器并联实现&#xff0c;这种电路称之为寄存器。 寄存器是计算机中央…

MATLAB使用系统辨识工具箱建立PID水温的传递函数系数

概述 利用PID控制水温&#xff0c;由于实际在工程项目中&#xff0c;手动调节PID参数比较耗费时间&#xff0c;所以可以先利用MATLAB中的Simulink软件建立模型&#xff0c;先在仿真软件上调节大概的PID参数&#xff0c;再利用此PID参数为基础在实际的工程项目中手动调节PID参数…

spring boot(学习笔记第十一课)

spring boot(学习笔记第十一课) Session共享&#xff0c;JPA实现自动RESTful 学习内容&#xff1a; Session共享JPA实现自动RESTful 1. Session共享 Session共享面临问题 spring boot默认将session保存在web server的内存里面&#xff0c;会产生什么问题呢。 如上图所示&#…

《昇思25天学习打卡营第15天 | 昇思MindSpore基于MindSpore的红酒分类实验》

15天 本节学了通过MindSpore的完成红酒分类。 1.K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;是机器学习最基础的算法之一。 1.1分类问题 1.2回归问题 1.3距离的定义 2.数据处理 2.1 数据准备 2.2 数据读取与处…

isupper()方法——判断字符串是否全由大写字母组成

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isupper()方法用于判断字符串中所有的字母是否都是大写。isupper()方法的语法格式如下&#xff1a; str.isupper() 如果字符串中包含至少…

OpenGL3.3_C++_Windows(24)

渲染平行光阴影 阴影作用&#xff1a; 有了阴影的渲染&#xff0c;更容易地区分出物体之间的位置关系&#xff0c;如何判断片段是否在阴影中&#xff1f; 普通思路&#xff1a; 以光的位置为视角进行渲染&#xff0c;我们绘制一条从光源出发的射线&#xff0c;测试更新射线经过…

数据结构-分析期末选择题考点(广义表)

莫道桑榆晚 为霞尚满天 数据结构-图期末选择题 数据结构-串、数组选择题 数据结构-排序选择题 数据结构-线性表、栈、队列、二叉树合集 契子✨ 广义表&#xff1a; <1>考点一&#xff1a;基本概念 广义表的基础概念 &#xff08;1&#xff09;什么是广义表 广义表&#…

小韩厂涨乌托邦公式源码

小韩厂涨&乌托邦&公式源码已经测试通过,可以发布云平台自行编辑 DRAWGBK(C>0, RGB(50,60,250),RGB(17,21,89),0,11,0); H1:=MAX(DYNAINFO(3),DYNAINFO(5)); L1:=MIN(DYNAINFO(3),DYNAINFO(6)); P1:=H1-L1; 阻力:=L1+P1*7/8,COLORGREEN; 支撑:=L1+P1*0.5/8,COLORRED;…

超详细的 C++中的封装继承和多态的知识总结<1.封装>

引言 小伙伴们都知道C面向对象难&#xff0c;可是大家都知道&#xff0c;这个才是C和C的真正区别的地方&#xff0c;也是C深受所有大厂喜爱的原因&#xff0c;它的原理更接近底层&#xff0c;它的逻辑更好&#xff0c;但是学习难度高&#xff0c;大家一定要坚持下来呀&#xff…

如何做好一个企业家IP:塑造独特的个人品牌

在当今数字化时代&#xff0c;个人品牌的力量愈发凸显&#xff0c;对于企业家而言&#xff0c;一个强大的IP&#xff08;Intellectual Property&#xff0c;即知识产权或个人品牌&#xff09;不仅有助于提升个人影响力&#xff0c;还能为企业的发展注入强大动力。那么&#xff…

Flutter【组件】点击类型表单项

简介 flutter 点击表单项组件&#xff0c;适合用户输入表单的场景。 点击表单项组件是一个用户界面元素&#xff0c;通常用于表单或设置界面中&#xff0c;以便用户可以点击它们来选择或更改某些设置或输入内容。这类组件通常由一个标签和一个可点击区域组成&#xff0c;并且…

【后端面试题】【中间件】【NoSQL】ElasticSearch索引机制和高性能的面试思路

Elasticsearch的索引机制 Elasticsearch使用的是倒排索引&#xff0c;所谓的倒排索引是相对于正排索引而言的。 在一般的文件系统中&#xff0c;索引是文档映射到关键字&#xff0c;而倒排索引则相反&#xff0c;是从关键字映射到文档。 如果没有倒排索引的话&#xff0c;想找…

基于51单片机的篮球计时器Proteus仿真

文章目录 一、篮球计时器1.题目要求2.思路3.仿真图3.1 未仿真时3.2 仿真开始3.3 A队进分3.4 B队进分3.5 比赛结束 4.仿真程序4.1 主函数4.2 时间显示4.3 比分显示4.4 按键扫描 二、总结 一、篮球计时器 1.题目要求 以51单片机为核心&#xff0c;设计并制作篮球计时器 基本功…