数据结构 第1章:绪论

文章目录

  • 1. 绪论
    • 1.1. 数据结构
  • 1.2. 算法
    • 1.2.1. 算法的基本概念
    • 1.2.2. 算法的时间复杂度
    • 1.2.3. 算法的空间复杂度

1. 绪论

程序 = 数据结构 + 算法

1.1. 数据结构

  1. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

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

  3. 数据项:数据的不可分割的最小单位。

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

  5. 数据结构:指互相之间存在着一种或多种特定关系的数据元素的集合,包括逻辑结构,存储结构和对数据的运算。(数据元素都不是孤立存在的)。

  6. 抽象数据类型(ADT):指一个数学模型以及定义在该模型上的一组操作,只取决于它的一组逻辑特性,用一个三元组表示(D, S, P)。

  7. 数据类型:是程序设计语言中的一个概念,它是一个值的集合和操作的集合。

  8. 逻辑结构:是指数据之间关系的描述,与数据的存储结构无关。分为线性结构和非线性结构,通常分为四类结构:

  1. 集合:结构中的数据元素除了同属于一种类型外,别无其它关系。
  2. 线性结构:结构中的数据元素之间存在一对一的关系。
  3. 树型结构:结构中的数据元素之间存在一对多的关系。
  4. 图状结构(网状结构):结构中的数据元素之间存在多对多的关系。
  1. 存储结构:是指数据结构在计算机中的表示,又称为数据的物理结构。它包括数据元素的表示和关系的表示,通常由四种基本的存储方法实现:

数据的存储结构应正确反映数据元素之间的逻辑关系

  1. 顺序存储方式。数据元素顺序存放,每个存储结点只含一个元素,存储位置反映数据元素间的逻辑关系,存储密度大。有些操作(如插入、删除)效率较差。
  2. 链式存储方式。每个存储结点除包含数据元素信息外还包含一组(至少一个)指针,指针反映数据元素间的逻辑关系。这种方式不要求存储空间连续,便于动态操作(如插入、删除等),但存储空间开销大(用于指针),且不能折半查找。
  3. 索引存储方式。除数据元素存储在一组地址连续的内存空间外,还需建立一个索引表,索引表中索引指示存储结点的存储位置(下标)或存储区间端点(下标)。
  4. 散列存储方式。通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将散列函数的值解释成关键字所在元素的存储地址。其特点是存取速度快,只能按关键字随机存取,不能顺序存取,也不能折半存取。
  1. 顺序存储与链式存储的区别
  1. 顺序储存结构
    是把数据元素存放在地址连续的存储单元里
    其数据间的逻辑关系和物理关系是一致的
  2. 链式存储结构
    是把数据元素存放在任意的存储单元里
    这组存储单元可以是连续的
    也可以是不连续的
    在这里插入图片描述

在这里插入图片描述

1.2. 算法

1.2.1. 算法的基本概念

  1. 算法:是对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操作。
  2. 算法的特性:有穷性、确定性、可行性、输入、输出。
  3. 算法的设计目标:正确性,可读性,健壮性,高效率与低存储量需求。

算法和程序十分相似,但又有区别。程序不一定具有有穷性,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。一个算法若用程序设计语言来描述,则它就是一个程序。

1.2.2. 算法的时间复杂度

  1. 如何计算
    找到一个基本操作(最深层循环)
    分析该基本操作的执行次数x与问题规模n的关系 x = f ( n )
    x的数量级O ( x ) O(x)O(x)就是算法时间复杂度T ( n ):O ( x ) = T ( n )

  2. 常用技巧
    在这里插入图片描述

  3. 三种复杂度
    最坏时间复杂度:考虑输入数据“最坏”的情况。
    平均时间复杂度:考虑所有输入数据都等概率出现的情况。
    最好时间复杂度:考虑输入数据“最好”的情况。

算法的性能问题只有在 n 很大时才会暴露出来

1.2.3. 算法的空间复杂度

  1. 普通程序:
  1. 找到所占空间大小与问题规模相关的变量
  2. 分析所占空间 x 与问题规模 n 的关系 x = f ( n )
  3. x 的数量级 O ( x ) 就是算法空间复杂度 S ( n )
  1. 递归程序:
  1. 找到递归调用的深度x与问题规模n的关系 x = f ( n )
  2. x的数量级 O ( x )就是算法空间复杂度 S ( n )

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

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

相关文章

【机器学习300问】33、决策树是如何进行特征选择的?

还记得我在【机器学习300问】的第28问里谈到的,看决策树的定义不就是if-else语句吗怎么被称为机器学习模型?其中最重要的两点就是决策树算法要能够自己回答下面两问题: 该选哪些特征 特征选择该选哪个阈值 阈值确定 今天这篇文章承接上文&…

神经网络中的先验知识

单调性约束: 单调性约束对于某些问题非常关键,可以确保模型输出与输入的关系保持单调。在我的实践中,我发现通过引入这种约束,能够有效提高模型的性能,特别是在需要保持某些顺序关系的任务上。 平滑性约束&#xff1a…

探秘高校线上心理咨询室:Java+SpringBoot的实践

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

蓝桥·算法双周赛|第七场分级赛——小白入门赛

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

解锁Redis宝藏:探索Redis哈希(Hash)的神奇世界!

Redis 哈希(Hash)是一种灵活且功能强大的数据结构&#xff0c;它可以存储多个字段和对应的值&#xff0c;适用于存储对象。了解 Redis 哈希的基本命令、示例和使用方法&#xff0c;以及常见的应用场景&#xff0c;将帮助您更好地利用 Redis 的强大功能。 Redis 哈希的基本命令…

AI辅助研发正在成为造福人类的新生科技力量

目录 1.AI用于药物研发 &#xff08;1&#xff09;药物靶点预测&#xff1a; &#xff08;2&#xff09;药物分子设计&#xff1a; &#xff08;3&#xff09;药物筛选&#xff1a; &#xff08;4&#xff09;药效和安全性预测&#xff1a; &#xff08;5&#xff09…

C#四部曲(知识补充)

Unity跨平台原理 .Net相关 只要编写的时候遵循.NET的这些规则&#xff0c;就能在.NET平台下通用 各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言← 跨平台↓ Unity跨平台原理&#xff08;Mono&#xff09; c#脚本→MonoC#编…

CCCorelib 点云曲面特征(CloudCompare内置算法库)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里基于每个点的邻域协方差来获取点云中具有的曲面几何特征的点,计算方式如下图所示: 二、实现代码 // CloudCompare #include <CCCoreLib/PointCloudTpl.h> #include <CCCoreLib/

QT6.6下android编译及调用自定义so库方法

一.问题概述 最近需要把QT程序从5.12的桌面环境移植到QT6.6的android下,项目中有很多DLL库要重新编译为so文件,移植到android环境然后调用,中间有很多坑,虽然大体和桌面系统用法相同,但细节上还是有区别的,尤其是so库的调用方法上,过程中也是debug了两天才解决,如果你也…

husky 检查commit

1 . Package.json 安装以下插件 "commitlint/cli": "^17.4.4", "commitlint/config-conventional": "^17.4.4", "core-js": "^3.6.4", "custom-event-polyfill": "^1.0.7", "fetch-…

使用 PlayFab 服务器托管的 5 个步骤

在本教程中,你将了解如何使用 Unity、镜像网络和 PlayFab 服务器托管来构建在线多人游戏。玩家不能再位于同一个本地网络上。他们将连接到托管在云中的专用服务器,这使得他们即使相距很远也可以一起玩。 架构概述 下图显示了我们将构建的架构。 玩家将使用他们的客户端并连…

2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题是由安全生产模拟考试一点通提供&#xff0c;G3锅炉水处理证模拟考试题库是根据G3锅炉水处理最新版教材&#xff0c;G3锅炉水处理大纲整理而成&#xff0…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记08_行为歧视

1. 常见的报价方式 1.1. 水滴定价&#xff08;Drip Pricing&#xff09; 1.1.1. 用一个较低的初始价格吸引消费者入局&#xff0c;之后再不断收取附加费用 1.2. 打折促销 1.2.1. 在一个远被高估的原价上制造折扣价格的魅力 1.2…

Hive面经

hive原理 Hive 内部表和外部表的区别Hive 有索引吗运维如何对 Hive 进行调度ORC、Parquet 等列式存储的优点数据建模用的哪些模型&#xff1f;1. 星型模型2. 雪花模型3. 星座模型 为什么要对数据仓库分层&#xff1f;使用过 Hive 解析 JSON 串吗sort by 和 order by 的区别数据…

spring cloud负载均衡算法,类型

1、轮询法 将请求按顺序轮流地分配到后端服务器上&#xff0c;它均衡地对待后端的每一台服务器&#xff0c;而不关心服务器实际的连接数和当前的系统负载。 2、随机法 通过系统的随机算法&#xff0c;根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统…

linux 系统下在终端中切换base环境

Linux 系统下切换base环境 1. 查看当前conda下已安装环境 conda info --envs 2. 切换到另一环境可以使用 conda activate env_name 3. 想要返回base环境&#xff0c;可使用 conda deactivate

【MySQL 系列】MySQL 语句篇_DCL 语句

DCL&#xff08; Data Control Language&#xff0c;数据控制语言&#xff09;用于对数据访问权限进行控制&#xff0c;定义数据库、表、字段、用户的访问权限和安全级别。主要关键字包括 GRANT、 REVOKE 等。 文章目录 1、MySQL 中的 DCL 语句1.1、数据控制语言--DCL1.2、MySQ…

自动化运维工具Ansible

一.Ansible基本内容 1.定义 Ansible是基于模块工作的&#xff0c;只是提供了一种运行框架&#xff0c;本身没有完成任务的能力&#xff0c;真正操作的是Anisble的模块。每个模块都是独立的、实现了批量系统配置、批量程序部署、批量运行命令等功能。 2.特点与优势 优势&…

【Python爬虫神器揭秘】手把手教你安装配置Scrapy,高效抓取网络数据

1、 引言 在大数据时代&#xff0c;网络上的信息犹如海洋般浩瀚。想要在这片海洋里挖掘宝藏&#xff0c;一款强大的工具必不可少。今天我们要带大家深入探索的就是Python界鼎鼎大名的爬虫框架——Scrapy。无论你是数据分析师、研究员还是开发者&#xff0c;学会利用Scrapy来自…

基于单片机的IC 卡门禁系统设计

摘要:针对传统门锁钥匙易丢失、配置不便和忘记携带等问题,提出了一种基于STC89C52 的IC 卡门禁系统设计。该系统以STC89C52 单片机为核心来控制电子锁模块的开关。主要过程是由RFID 模块读取IC卡ID 并通过串口发送至STC89C52 单片机模块,STC89C52 单片机模块可以实现在线对I…