【数据结构和算法的概念等】

目录

  • 一、数据结构
    • 1、数据结构的基本概念
    • 2、数据结构的三要素
      • 2.1 数据的逻辑结构
      • 2.2 数据的存储(物理)结构
      • 2.3 数据的运算
  • 二、算法
    • 1、算法概念
    • 2、算法的特性及特点
    • 3、算法分析

一、数据结构

1、数据结构的基本概念

数据: 是所有能输入到计算机中并能被程序识别和处理的符号集合。包括:数值数据(整数、实数等),非数值数据(图形、图像、声音、文字等)。

数据元素: 数据的基本单位,通常作为一个整体进行考虑和处理,一个数据元素可由若干数据项组成;

数据项: 构成数据元素的不可分割的最小单位;

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

关系:
在这里插入图片描述
举例进行理解:

  1. 学校里有很多不同类型的表:数据
  2. 单独的一张成绩单:数据对象
  3. 成绩单中每一行有姓名、学号、班级等:数据元素
  4. 成绩单中每一行的每一个表格姓名等都是一个个的数据项

数据类型: 一组值的集合以及定义于这个值集上的一组操作
1.原子类型:其值不可再分的数据类型,如bool和int类型
2.结构类型:其值可以再分解为若干成分的数据类型,如结构体

抽象数据类型(Abstract Data Type, ADT): 一个数据模型以及定义在该模型上的一组操作,也就是定义了一个数据结构

2、数据结构的三要素

数据结构: 相互之间存在相互关系的数据元素的集合,如下为数据的三要素:

逻辑结构存储(物理)结构数据的运算

2.1 数据的逻辑结构

数据的逻辑结构是指:数据之间逻辑关系的整体。

集合:数据元素之间没有关系;
线性结构:数据元素之间是一对一的线性关系;
树结构:数据元素之间是一对多的层次关系;
图结构:数据元素之间是多对多的任意关系。

2.2 数据的存储(物理)结构

数据的存储结构是指:数据及其逻辑结构在计算机中的表示。

顺序存储结构: 用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置表示;
链式存储结构: 用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示;
索引存储结构: 又称为直接寻址,可以通过下标来进行直接访问,索引项的一般形式是(关键字,地址);
散列存储结构: 又称为哈希存储,地址会通过hash算法来运算成一个相同长度的hash值,然后存放这个hash值,而不是直接存放地址,在访问关键字的时候会通过运算解码hash值,然后再访问。

注意:

  1. 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的;
  2. 数据的存储结构会影响存储空间分配的方便程度;
  3. 数据的存储结构会影响对数据运算的速度。

2.3 数据的运算

根据逻辑结构来定义,根据存储结构来实现。

二、算法

1、算法概念

算法: 是对特定问题求解步骤的一种描述,是指令的有限序列。程序 = 数据结构 + 算法 ;算法必须是有穷的,而程序可以是无穷的。

2、算法的特性及特点

算法的基本特性:

1. 有穷性: 有穷时间内能执行完
2. 确定性: 相同输入只会输出相同结果
3. 可行性: 可以用乙游的基本操作实现算法
4. 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合
5. 输出: 一个算法有一个或多个输出,这些输出是与输入有着某种特定的关系

好算法的特点:

  1. 高效性与低存储要求:即算法执行省时、省内存,时间复杂度低、空间复杂度低
  2. 正确性:能正确解决问题
  3. 健壮性:指能处理一些异常
  4. 可读性:对算法的描述要让其他人也能看懂

3、算法分析

  1. 时间复杂度:当问题规模充分大时,算法中基本语句的执行次数在渐近意义下的阶,关注的是增长趋势,用大写O记号表示;
  2. 空间复杂度:算法在执行过程中需要的辅助空间数量,地柜程序看递归深度与问题规模n的关系。

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

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

相关文章

前端八股文 对事件循环的理解

对事件循环的理解 思维导图 图示 实际案例的执行过程 总结

能源电子领域2区SCI,版面稀缺,即将截稿,无版面费!

【SciencePub学术】今天小编给大家推荐1本能源电子领域的SCI!影响因子1.0-2.0之间,最重要的是审稿周期较短,对急投的学者较为友好! 能源电子类SCI 01 / 期刊概况 【期刊简介】IF:1.0-2.0,JCR2区&#xf…

【C++】C++入门基础--引用,inline,nullptr

文章目录 前言一、引用?1.1 引用的概念和定义1.2 引用的特性1.3 引用的使用1.4 const引用(常引用)1.5 指针和引用的关系 二、inline2.1inline概念和定义2.2 inline使用2.3 inline注意事项 三.nullptr总结 前言 上一篇文章我们介绍了C中的命名…

枚举对象序列化规则(将Java枚举转换为JSON字符串的步骤)

文章目录 引言I 案例分析1.1 接口签名计算1.2 请求对象1.3 枚举对象序列化II 在JSON中以枚举的code值来表示枚举的实现方式2.1 自定义toString方法返回code引言 在Java中,每个对象都有一个toString方法,用于返回该对象的字符串表示。默认情况下,Enum类的toString方法返回的…

C语言笔记30 •单链表经典算法OJ题-2.移除链表元素•

移除链表元素 1.问题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 2.代码实现&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h&g…

【RHCE】转发服务器实验

1.在本地主机上操作 2.在客户端操作设置主机的IP地址为dns 3.测试,客户机是否能ping通

特征及特征选择

1、特征&#xff08;Feature&#xff09;是什么&#xff1f; 特征是数据集中的一个可量化的属性或变量&#xff0c;用于描述数据点的特性。 特征可以是连续的数值&#xff0c;如身高、体重等&#xff0c;也可以是离散的类别&#xff0c;如性别、种族等。 常见的特征有边缘、角、…

Mosh|初学者 SQL 教程

sql文件链接&#xff1a;链接: https://pan.baidu.com/s/1okjsgssdxMkfKf8FEos7DA?pwdf9a9 提取码: f9a9 在mysql workbench 导入 create_databases.sql 文件&#xff0c;下面是运行成功的界面 快捷方式&#xff1a;全部运行可以同时按下controlcommandenter &#xff0c;或者…

Linux学习之网络配置问题

Linux学习——那些我们网络配置遇到过的问题&#xff1f;ping不通百度&#xff1f;XShell连接不上&#xff1f;&#xff08;超详细&#xff09; &#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感…

详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化

文章目录 startupProbe探针startupProbe说明示例配置参数解释 使用场景说明实例——要求&#xff1a; 容器在8秒内完成启动&#xff0c;否则杀死对应容器工作流程说明timeoutSeconds: 和 periodSeconds: 参数顺序说明 livenessProbe探针livenessProbe说明示例配置参数解释 使用…

生产者消费者模型和线程同步问题

文章目录 线程同步概念生产者消费者模型条件变量使用条件变量唤醒条件变量 阻塞队列 线程同步概念 互斥能保证安全,但是仅有安全不够,同步可以更高效的使用资源 生产者消费者模型 下面就基于生产者消费者来深入线程同步等概念: 如何理解生产消费者模型: 以函数调用为例: 两…

LNMP搭建Discuz和Wordpress

1、LNMP L:linux操作系统 N&#xff1a;nginx展示前端页面web服务 M&#xff1a;mysql数据库&#xff0c;保存用户和密码&#xff0c;以及论坛相关的内容 P&#xff1a;php动态请求转发的中间件 数据库的作用&#xff1a; 登录时验证用户名和密码 创建用户和密码 发布和…

存储产品选型策略 OSS生命周期管理与运维

最近在看阿里云的 云存储通关实践认证训练营这个课程还是不错的。 存储产品选型策略、对象存储OSS入门、基于对象存储OSS快速搭建网盘、 如何做好权限控制、如何做好数据安全、如何做好数据管理、涉及对象存储OSS的权限控制、使用OSS完成静态网站托管、对OSS中存储的数据进行分…

ubuntu使用kubeadm搭建k8s集群

一、卸载k8s kubeadm reset -f modprobe -r ipip lsmod rm -rf ~/.kube/ rm -rf /etc/kubernetes/ rm -rf /etc/systemd/system/kubelet.service.d rm -rf /etc/systemd/system/kubelet.service rm -rf /usr/bin/kube* rm -rf /etc/cni rm -rf /opt/cni rm -rf /var/lib/etcd …

压缩感知2——算法模型

采集原理 其中Y就是压缩后的信号表示(M维)&#xff0c;Φ表示采集的测量矩阵&#xff0c;可以是一个随机矩阵&#xff0c;X代表原始的数字信号&#xff08;N维&#xff09;。 常见的测量矩阵——随机高斯矩阵 随机伯努利矩阵 稀疏随机矩阵等&#xff0c;矩阵需要满足与信号的稀…

57、基于概率神经网络(PNN)的分类(matlab)

1、基于概率神经网络(PNN)的分类简介 PNN&#xff08;Probabilistic Neural Network&#xff0c;概率神经网络&#xff09;是一种基于概率论的神经网络模型&#xff0c;主要用于解决分类问题。PNN最早由马科夫斯基和马西金在1993年提出&#xff0c;是一种非常有效的分类算法。…

OpenCV MEI相机模型(全向模型)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 对于针孔相机模型,由于硬件上的限制(如进光量等),他的视野夹角往往有效区域只有140度左右,因此就有研究人员为每个针孔相机前面再添加一个镜片,如下所示: 通过折射的方式增加了相机成像的视野,虽然仍然达不…

精讲:java之多维数组的使用

一、多维数组简介 1.为什么需要二维数组 我们看下面这个例子&#xff1f;“ 某公司2022年全年各个月份的销售额进行登记。按月份存储&#xff0c;可以使用一维数组。如果改写为按季度为单位存储怎么办呢&#xff1f; 或许现在学习了一维数组的你只能申请四个一维数组去存储每…

修改服务器挂载目录

由于我们的项目通常需要挂载一个大容量的数据盘来存储文件数据&#xff0c;所以我们每台服务器都需要一个默认的挂载目录来存放这些数据&#xff0c;但是由于我们的误操作&#xff0c;导致挂载目录名字建错了&#xff0c;这时候后端就读不到挂载目录了&#xff0c;那我们我们的…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab&#xff0c;通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤&#xff1a; 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥&#xff1a;ssh-keygen -t rsa -b 4096 -C "your…