数据结构(一)——概述

news2024/9/24 14:49:59

一、绪论

1.1数据结构的基本概念

数据:用来描述客观事物的数、计算机中是字符及所有能输入并被程序识别和处理的符号的集合。

数据元素:数据的基本单位,一个数据元素可由若干数据项组成。

数据结构:指相互之间存在一种或多种特定关系的数据元素的集合。
数据结构的三要素:逻辑结构、存储结构、数据的运算。

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

逻辑结构:指数据元素之间的逻辑关系

  • 集合:各个元素同属一个集合,别无其它关系。
  • 线性结构:数据元素之间是一对一的关系。
  • 树型结构:数据元素之间是一对多的关系。
  • 图状结构(网状结构):数据元素之间存在多对多的关系。

存储结构(物理结构):用计算机表示数据元素的逻辑关系(后三种统称为非顺序存储)

  • 顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
  • 链式存储:逻辑上相邻的元素在物理位置上可以不相邻,可借助指示元素存储地址的指针来表示元素之间的逻辑关系。
  • 索引存储:在存储元素信息的同时,建立附加的索引表。索引表中的每项称为索引项,索引项 的一般形式是(关键字,地址)。
  • 散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。
  1. 若采用顺序存储,则各个数据元素在物理上必须是连续的;
    若采用非顺序存储,则各个数据元素在物理上可以是离散的。
  2. 数据的存储结构会影响存储空间分配的方便程度
  3. 数据的存储结构会影响对数据运算的速度

数据的运算:运算的定义是针对逻辑结构的, 指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
例:结合现实需求定义队列这种逻辑结构的运算:
①队头元素出队; ②新元素入队; ③输出队列长度;

数据类型:数据类型是一个值的集合和定义在此集合上的一组操作的总称。
   1)原子类型。其值不可再分的数据类型
   2)结构类型。其值可以再分解为若干成分(分量)的数据类型

抽象数据类型(ADT):是抽象数据组织及与之相关的操作。

1.2算法和算法评价

1.2.1 算法的基本概念

算法:对特定问题求解步骤的一种描述,是指令的有限序列。其中的每条指令表示一个或多个操作

算法的特性:有穷性、确定性、可行性、输入、输出。

  • 有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。
    用有限步骤解决某个特定的问题
  • 确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
  • 可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
  • 输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
  • 输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

算法的设计目标:正确性,可读性,健壮性,高效率与低存储量需求。

  • 正确性。算法应能够正确地解决求解问题。
  • 可读性。算法应具有良好的可读性,以帮助人们理解
  • 健壮性。输入非法数据时算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果
  • 高效率与低存储量需求。花费时间少时间复杂度低;不费内存,空间复杂度低。

1.2.2 算法的时间复杂度

算法时间复杂度:事前预估算法时间开销T(n)与问题规模 n 的关系(T 表示 “time)

1.2.3 算法的空间复杂度

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:Vector的使用

一、vector的介绍 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以…

解决win10系统cmd命令无法使用ssh问题

目录 问题说明:在使用ssh命令连接虚拟机地址时,出现了以下报错:​编辑 解决方法如下: 1.打开Windows设置,搜索点击添加可选功能: 2.点击添加功能: 3.安装Open SSH客户端和Open SSH服务器: …

基于Python3的数据结构与算法 - 10 计数排序

一、问题 对列表进行排序,已知列表中的数范围都在0到100之间。设计时间复杂度为O(n)的算法。 二、解决思路 我们已知数字的范围,那么我们可以将数字的个数得到: 例如:有一个0~5的列表 [1,3,2,4,1,2,3,1,3,5] 则共有0个0&am…

Tomcat(二) 动静分离

一、(TomcatNginx)动静分离 1、单机反向代理 利用 nginx 反向代理实现全部转发至指定同一个虚拟主机 客户端curl www.a.com 访问nginx服务,nginx服务通过配置反向代理proxy_pass www.a.com:8080,最终客户端看到的是www.a.com 实验中:7-3 做客…

保姆级GeoWebCache矢量瓦片切片流程

1矢量切片解决方案 1.1Geoserver配置geowebcache插件 参考文章 (53条消息) 独立安装geoservergeowebcache发布arcgis切片服务_itouch_ok的专栏-CSDN博客 1.将下载好的geoserver 2.19.3安装部署 将下载好的geowebcache 2.19.3的war包解压到 GeoServer 安装目录下./usr/loc…

两天学会微服务网关Gateway-Gateway HelloWorld快速入门

锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…

SpringBoot 自定义映射规则resultMap collection一对多

介绍 collection是封装一对多关系的,通常情况下是一个列表,association是一对一,通常情况是一个对象。例如:查询班级下所有的学生,一个班级可以有多个学生,这就是一对多。 案例 有一个学生表&#xff0c…

重构笔记系统:Docker Compose在微服务架构中的应用与优化

虽然我的笔记系统的开发是基于微服务的思想,但是在服务的配置和编排上感觉还是不太合理,具体来说,在开发上的配置和在生产上的配置差别太大。现在规模小,后面规模变大,估计这一块会成为系统生长的瓶颈。 因此&#xff…

优先级队列(Java )

目录 一、 优先级队列1、概念 二、优先级队列的模拟实现1、堆的概念2、堆的存储方式 三、堆的创建1、堆向下调整2、堆的创建3、建堆的时间复杂度 四、堆的插入与删除1、堆的插入2、堆的删除 五、用堆模拟实现优先级队列 一、 优先级队列 1、概念 优先级队列(Priori…

Windows Docker 部署 Jenkins

一、简介 今天介绍一下在 Windows Docker 中部署 Jenkins 软件。在 Windows Docker 中,分为两种情况 Linux 容器和 Windows 容器。Linux 容器是通常大多数使用的方式,Windows 容器用于 CI/CD 依赖 Windows 环境的情况。 二、Linux 容器 Linux 容器内部…

vue中使用echarts实现人体动态图

最近一直处于开发大屏的项目,在开发中遇到了一个小知识点,在大屏中如何实现人体动态图。然后看了下echarts官方文档,根据文档中的示例调整出来自己想要的效果。 根据文档上发现 series 中 type 类型设置为 象形柱形图,象形柱图是…

[HackMyVM]靶场 Quick3

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (U…

解密Lawnchair:打造个性化极致的Android桌面体验

解密Lawnchair:打造个性化极致的Android桌面体验 1. 简介 Lawnchair是一款知名的Android桌面定制工具,旨在为用户提供个性化极致的桌面体验。作为一个开源项目,Lawnchair融合了简洁、灵活和强大的特点,让用户能够自由定制其Andro…

b站小土堆pytorch学习记录—— P17 土堆说卷积操作

文章目录 一、前置知识什么是卷积操作 二、代码 一、前置知识 什么是卷积操作 推荐几个高赞博客: 卷积最容易理解的解释 卷积神经网络(CNN)详细介绍及其原理详解 还有pytorch官网的动态图: pytorch卷积 二、代码 import t…

免费的ChatGPT网站( 7个 )

ChatGPT 是由 OpenAI 公司研发的一款大型语言模型,它可以实现智能聊天、文本生成、语言翻译等多种功能。以下是 ChatGPT 的详细介绍: 智能聊天:ChatGPT 可以与用户进行自然语言对话,回答用户的问题,提供相关的信息和建…

通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践

作者:汪诚愚(熊兮)、高一鸿(子洪)、黄俊(临在) Qwen1.5(通义千问1.5)是阿里云最近推出的开源大型语言模型系列。作为“通义千问”1.0系列的进阶版,该模型推出…

S4---FPGA-K7板级原理图硬件实战

视频链接 FPGA-K7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-K7板级原理图硬件实战 基于XC7K325TFFG900的FPGA硬件实战框图 基于XILINX 的KINTEX-7 芯片XC7K325FPGA的硬件平台,FPGA 开发板挂载了4 片512MB 的高速DDR3 SDRAM 芯片,另外板上带有一个SODIM…

Python爬虫实战(基础篇)—13获取《人民网》【最新】【国内】【国际】写入Word(附完整代码)

文章目录 专栏导读背景测试代码分析请求网址请求参数代码测试数据分析利用lxml+xpath进一步分析将获取链接再获取文章内容测试代码写入word完整代码总结专栏导读 🔥🔥本文已收录于《Python基础篇爬虫》 🉑🉑本专栏专门针对于有爬虫基础准备的一套基础教学,轻松掌握Py…

深度学习-Pytorch实现经典VGGNet网络

深度学习-Pytorch实现经典VGGNet网络 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰,打…

数据可视化原理-腾讯-3D网格热力图

在做数据分析类的产品功能设计时,经常用到可视化方式,挖掘数据价值,表达数据的内在规律与特征展示给客户。 可是作为一个产品经理,(1)如果不能够掌握各类可视化图形的含义,就不知道哪类数据该用…