当前位置: 首页 > news >正文

数据结构——(一)绪论


👉数据元素整体思维导图 欢迎补充

一、基本概念❤️

1.1基本术语⭐️

(1)数据
客观事务属性的数字、字符。

(2)数据元素
数据元素是数据的基本单位,一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分的最小单元。
下面我们举一个例子来说明一下,下面就是一个学生表

学号姓名
0711小唐

如图所示,其中的学生表就是我们的数据元素,然后学号姓名分别对应的就是我们的数据项。

(3)数据对象
数据对象,也就是我们相同数据元素的集合,例如下面这个学生表

学号姓名
0711小唐
0403小宋
0219小黄

如图所示,这样多条记录的合集就是我们数据对象啦

(4)数据类型

1)原子类型:其值不可再分数据类型
在这里插入图片描述

2)结构类型:其值可以再分的数据类型
在这里插入图片描述
列如上面面这个结构体,还可以分为 int和string

3)抽象数据类型:抽象数据组织及其相关操作 这个你就可以理解为刚刚学生表+学生表对于的操作(增删改查)


1.2数据结构三要素⭐️⭐️⭐️

数据结构是相互之间,一种或者多种,特定关系的元素集合,数据元素之间的相互关系,我们称只为结构,数据元素主要分为以下三要素

1.逻辑结构
在这里插入图片描述

2.物理(存储)结构

顺序结构:相邻的元素存储在物理结构上的位置也相邻,只能使用相邻的一整块存储结构,可能会有较多的外部碎片。使用数组来存,就是一个非常明显的顺序结构。

链式结构:逻辑相邻,但是我们的物理结构的位置可以不相邻,因为借助指针,所以会占有额外的存储空间,读取元素时,也只能进行顺序读取。

索引结构:外部建立索引表,通过索引表读取,每一项被称之为索引项【index:key】,比如省会的索引【湖南:长沙】

散列结构:根据元素的关键字来计算出元素的存储位置,又称Hash存储,在后续散链表的学习中,index=元素%key,我们会进行进一步讲解

tips:说到这里,部分读者逻辑和物理结构有点区分不了,我们可以这样来理解,比如在树形结构中,我可以既可以采取顺序存储,也可以采取链式存储的方式,逻辑结构独立于我们的存储结构,我们后续章节,也基本由顺序存储讲到链式存储

3.数据的运算
对于我们数据结构的操作:运算的定义正对于逻辑结构,实现针对于物理结构

二、算法及其评价❤️

2.1主要特性⭐️

1.输入:有0个或者多个输入
2.输出:有1个或者多个输出
3.可行性:所描述操作可以通过已经实现的基本运算执行有限次操作来实现
4.正确性:相同输入得到相同输出
5.有穷性:算法不是死循环

2.2算法评价⭐️

1.可读性:可以让接触到的人便于理解
2.正确性:算法可以正确的解决问题
3.健壮性:对于非法的数据可以自己进行处理
4.高效率和低容量需求:效率高,存储空间小

2.3 时间复杂度⭐️⭐️⭐️

给大家推荐这个视频,讲的很清楚
单层基本思路
1.写出每一趟的躺数t
2.写出每一次躺数t,里面元素的变化
3.求元素和躺数的关系
4.找到元素的终止条件
5.求解

多层基本思路
1.从i开始一直到循环结束
2.写出每一个i中经理多少次循环
3.求和

数据结构——时间复杂度计算

2.4 空间复杂度⭐️

依据算法规模来进行求解,S(n)=O(g(n)),一般来说所使用的辅助空间都是常量,这里的空间复杂度会在学邻接矩阵的时候有一个比较详细的了解

http://www.lryc.cn/news/95475.html

相关文章:

  • [ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择
  • 表单验证:输入的字符串以回车分隔并验证是否有
  • 智能财务分析-亿发财务报表管理系统,赋能中小企业财务数字化转型
  • 图为科技T501赋能工业机器人 革新传统工业流程
  • 安全狗深度参与编写的《云原生安全配置基线规范》正式发布!
  • 如何在3ds max中创建可用于真人场景的巨型机器人:第 2 部分
  • Vue中TodoList案例_编辑
  • 什么是Redis?
  • 深入浅出理解vue2/vue3响应式原理
  • ssh连接服务器配置
  • el-table 表头设置渐变色
  • GB/T 25000.51解读——软件产品的易用性怎么测?
  • 408复试day2(7大排序算法)
  • Vue消息订阅与发布
  • MySQL学习笔记 ------ 分组查询
  • Matlab 点云平面特征提取
  • vite的介绍
  • 裁员 10%,暴跌 14%,这家 IT 独角兽正在被抛弃!
  • 电脑记事本在哪里?电脑桌面显示记事本要怎么设置?
  • 微服务笔记---Nacos集群搭建
  • python 小案例
  • 【SpringBoot】SpringBoot JPA 基础操作(CURD)
  • 大数据技术之Hive3
  • Spring Boot实践二
  • python:基于GeoPandas和GeoViews库将GEDI激光高程数据映射到交互式地图
  • 汇编实现strcpy
  • Appium+python自动化(二十四) - 元素等待(超详解)
  • NFT市场泡沫破裂了吗?投资NFT是否仍然安全?
  • k8s使用helm部署Harbor镜像仓库并启用SSL
  • B/B+树算法