考研数据结构笔记(1)

news2025/5/16 3:50:48

数据结构(1)

  • 数据结构在学什么?
  • 数据结构的基本概念
    • 基本概念
    • 三要素
    • 逻辑结构
      • 集合
      • 线性结构
      • 树形结构
      • 图结构
    • 物理结构(存储结构)
      • 顺序存储
      • 链式存储
      • 索引存储
      • 散列存储
      • 重点
    • 数据的运算
  • 算法的基本概念
    • 什么是算法
    • 算法的五个特性
      • 有穷性
      • 确定性
      • 可行性
      • 输入
      • 输出
    • "好"算法的特性
      • 正确性
      • 可读性
      • 健壮性
      • 高效率和低存储量需求
  • 算法的时间复杂度
    • 规则
    • 常见的渐进时间复杂度
    • 口诀
  • 算法的空间复杂度
    • 普通程序的内存开销
    • 函数递归调用带来的内存开销

在这里插入图片描述
上图为简述一下考研408中计算机组成原理,操作系统,数据结构和计算机网络它们之间的关系。接下来我们正式进入数据结构的学习。

数据结构在学什么?

  • 如何用程序代码把现实世界的问题信息化
  • 如何用计算机高效地处理这些信息从而创造价值

数据结构的基本概念

在这里插入图片描述

基本概念

在这里插入图片描述
数据:数据是信息的载体,是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

计算机只能识别二进制数(0/1)

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

数据项:数据项是构成数据元素的不可分割的最小单位。
在这里插入图片描述

结构:各个元素之间的关系。

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

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

数据类型:是一个值的集合和定义在此集合上的一组操作的总称。

  • 原子类型:其值不可再分的数据类型。

像int、float等数据类型都是原子类型。

  • 结构类型:其值可以再分解为若干成分(分量) 的数据类型
  • 抽象数据类型(ADT):是抽象数据组织及与之相关的操作。

定义一个ADT,就是定义了数据的逻辑结构、数据的运算。也就是定义了一个数据结构

三要素

在这里插入图片描述

逻辑结构

在这里插入图片描述

集合

在这里插入图片描述
各个元素同属于一个集合,别无其它关系。

线性结构

在这里插入图片描述
数据元素之间是一对一的关系
除了第一个元素,所有元素都有唯一前驱
除了最后一个元素,所有元素都有唯一后继

树形结构

在这里插入图片描述
数据元素之间是一对多的关系

图结构

在这里插入图片描述
数据元素之间是多对多的关系

物理结构(存储结构)

在这里插入图片描述

顺序存储

顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

  • 优点:实现随机存储
  • 缺点:只能使用相邻的一整块存储单元。

在这里插入图片描述

链式存储

链式存储:逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

  • 优点:不会出现碎片现象
  • 缺点:存储指针占用额外的存储空间,且只能顺序存储。

在这里插入图片描述

索引存储

索引存储:在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)
在这里插入图片描述

散列存储

散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希 (Hash) 存储

重点

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

数据的运算

数据的运算:施加在数据上的运算包括运算的定义和实现。
运算的定义是针对逻辑结构的指出运算的功能。
运算的实现是针对存储结构的,指出运算的具体操作步骤。

在这里插入图片描述

定义一个ADT,就是定义了数据的逻辑结构、数据的运算。也就是定义了一个数据结构。

确定一种存储结构,就意味着在计算机中表示出数据的逻辑结构。存储结构不同,也会导致运算的具体实现不同。确定了存储结构,才能实现数据结构

在这里插入图片描述

算法的基本概念

在这里插入图片描述

什么是算法

在这里插入图片描述
算法:算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令
表示一个或多个操作

算法的五个特性

有穷性

有穷性:算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。

注:算法必须是有穷的,而程序可以是无穷的。

确定性

确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。

可行性

可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限来实现。

输入

输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。

输出

输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

"好"算法的特性

正确性

正确性:算法应能够正确地解决求解问题。

可读性

可读性:算法应具有良好的可读性,以帮助人们理解。

健壮性

健壮性:算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。

高效率和低存储量需求

花的时间少时间复杂度低;不费内存,空间复杂度低。

在这里插入图片描述

算法的时间复杂度

在这里插入图片描述
算法时间复杂度:事前预估算法时间开销T(n)与问题规模 n 的关系 (T 表示“time”)

当我们遇到以下题目计算语句的时间复杂度时
在这里插入图片描述
在这里插入图片描述
我们取时间开销计算式的最高阶为时间复杂度
在这里插入图片描述
当一个算法的问题规模n足够大时,
在这里插入图片描述
利用大O表示法表示时间复杂度。
在这里插入图片描述

规则

  • 加法规则
    T(n) = T(n) + T2(n) = 0(f(n)) + 0(g(n)) = 0(max(f(n), g(n)))—>多项相加,只保留最高阶的项,且系数变为1

  • 乘法规则
    T(n)= T(n)XT(n) = O((n))XO(g(n))= O(f(n)Xg(n))—>多项相乘,都保留

常见的渐进时间复杂度

在这里插入图片描述

在这里插入图片描述

口诀

常对幂指阶(从小到大)

最坏时间复杂度:最坏情况下算法的时间复杂度。
平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间。
最好时间复杂度:最好情况下算法的时间复杂度。

在这里插入图片描述

算法的空间复杂度

在这里插入图片描述

在这里插入图片描述
将代码装入内存中,无论问题规模如何,所需要的内存空间都是固定的常量。

普通程序的内存开销

在这里插入图片描述
当程序中出现的变量与问题规模n无关时,其充其量在式子中为常数,最后式子取最高阶用大O表示法为O(n)
在这里插入图片描述
此时空间复杂度取O(n*n)n平方

函数递归调用带来的内存开销

在这里插入图片描述
由于递归调用,函数所需空间增多。

在这里插入图片描述
此时调用5次,若问题规模为n,则调用1、2、3、…n次,为(1/2(nn))/2 + (1/2)n
S(n) = O(n
n)

在这里插入图片描述

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

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

相关文章

MATLAB知识点:矩阵的除法

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.2 算术运算 下面我们再来介绍矩阵的除法。事…

蓝桥杯----凑算式

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。 比如: 68/3952/714 就是一种解法, 53/1972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

图解Vue组件通讯【一图胜千言】

Vue的每个组件都有独自的作用域,组件间的数据是无法共享的,但实际开发工作中我们常常需要让组件之间共享数据,今天我们来学习下面三种组件通信方式: 父子组件之间的通信 兄弟组件之间的通信 祖先与后代组件之间的通信 1. 父子组件…

MIPS指令集处理器设计(支持64条汇编指令)

一、题目背景和意义 二、国内外研究现状 (略) 三、MIPS指令集处理器设计与实现 (一).MIPS指令集功能性梳理 1.MIPS指令集架构 (1).mips基础指令集格式总结 MIPS是(Microcomputer without interlocked pipeline stages)[10]的缩写,含义是…

开源免费的物联网网关 IoT Gateway

1. 概述 物联网网关,也被称为IOT网关,是一种至关重要的网络设备。在物联网系统中,它承担着连接和控制各种设备的重要任务,将这些设备有效地连接到云端、本地服务器或其他设备上。它既能够在广域范围内实现互联,也能在…

JAVASE进阶:Collection高级(2)——源码剖析ArrayList、LinkedList、迭代器

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:JAVASE进阶:Collection高级(1)——源码分析contains方法、lambda遍历集合 📚订阅…

IP地址信息在保险行业的创新应用与解决方案

随着数字化时代的来临,保险行业正积极探索新的技术手段,以提升服务效能、降低风险,并更好地满足客户需求。IP地址信息作为一种重要的数字化工具,在保险行业中展现了广泛的应用前景。IP数据云将深入探讨IP地址信息在保险行业中的创…

【极数系列】Flink集成KafkaSource 实时消费数据(10)

文章目录 01 引言02 连接器依赖2.1 kafka连接器依赖2.2 base基础依赖 03 连接器使用方法04 消息订阅4.1 主题订阅4.2 正则表达式订阅4.3 Partition 列分区订阅 05 消息解析06 起始消费位点07 有界 / 无界模式7.1 流式7.2 批式 08 其他属性8.1 KafkaSource 配置项(1&…

Stable Diffusion 模型下载:RealCartoon3D - V14

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 RealCartoon3D 是一个动漫卡通混合现实风格的模型,具有真实卡通的 3D 效果,当前更新到 V14 版本。 RealCartoon3D 是我上传的第一个模型。…

一文掌握SpringBoot注解之@Configuration知识文集(5)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

C++后端开发之Sylar学习三:VSCode连接Ubuntu配置Gitee

C后端开发之Sylar学习三:VSCode连接Ubuntu配置Gitee 为了记录学习的过程,学习Sylar时写的代码统一提交到Gitee仓库中。 Ubuntu配置Gitee 安装git sudo apt-get install -y git配置用户名和邮箱 git config --global user.name 用户名 …

计算机项目SpringBoot项目 办公小程序开发

从零构建后端项目、利用UNI-APP创建移动端项目 实现注册与登陆、人脸考勤签到、实现系统通知模块 实现会议管理功能、完成在线视频会议功能、 发布Emos在线办公系统 项目分享: SpringBoot项目 办公小程序开发https://pan.baidu.com/s/1sYPLOAMtaopJCFHAWDa2xQ?…

第四讲 混合背包问题

【题意分析】 这道题转换一下即可,将题中出现的0/1背包问题和完全背包问题转换为多重背包问题即可: if(s -1) s 1; else if(!s) s V/v;【参考文献】 第三讲 多重背包问题②——二进制优化 完成这个转换之后,再使用二进制优化即可完成&a…

Java 学习和实践笔记(1)

2024年,决定好好学习计算机语言Java. B站上选了这个课程:【整整300集】浙大大佬160小时讲完的Java教程(学习路线Java笔记)零基础,就从今天开始学吧。 在这些语言中,C语言是最基础的语言,绝大多…

PYthon进阶--网页采集器(基于百度搜索的Python3爬虫程序)

简介:基于百度搜索引擎的PYthon3爬虫程序的网页采集器,小白和爬虫学习者都可以学会。运行爬虫程序,输入关键词,即可将所搜出来的网页内容保存在本地。 知识点:requests模块的get方法 一、此处需要安装第三方库reques…

华为OD机试真题C卷-篇3

文章目录 查找一个有向网络的头节点和尾节点幼儿园篮球游戏 查找一个有向网络的头节点和尾节点 在一个有向图中,有向边用两个整数表示,第一个整数表示起始节点,第二个整数表示终止节点;图中只有一个头节点,一个或者多…

K8S之标签的介绍和使用

标签 标签定义标签实操1、对Node节点打标签2、对Pod资源打标签查看资源标签删除资源标签 标签定义 标签就是一对 key/value ,被关联到对象上。 标签的使用让我们能够表示出对象的特点,比如使用在Pod上,能一眼看出这个Pod是干什么的。也可以用…

Flink cdc3.0动态变更表结构——源码解析

文章目录 前言源码解析1. 接收schema变更事件2. 发起schema变更请求3. schema变更请求具体处理4. 广播刷新事件并阻塞5. 处理FlushEvent6. 修改sink端schema 结尾 前言 上一篇Flink cdc3.0同步实例 介绍了最新的一些功能和问题,本篇来看下新功能之一的动态变更表结…

【华为】GRE Over IPsec 实验配置

【华为】GRE Over IPsec 实验配置 前言报文格式 实验需求配置拓扑GRE配置步骤IPsec 配置步骤R1基础配置GRE 配置IPsec 配置 ISP_R2基础配置 R3基础配置GRE 配置IPsec 配置 PCPC1PC2 抓包检查OSPF建立GRE隧道建立IPsec 隧道建立Ping 配置文档 前言 GRE over IPSec可利用GRE和IP…

什么是MVVM模型

MVVM(Model-View-ViewModel)是一种用于构建 Web 前端应用程序的架构模式。它是从传统的 MVC(Model-View-Controller)模型演变而来,旨在解决界面逻辑与业务逻辑之间的耦合问题。 在传统的 MVC 架构中,View …