复习笔记——数据结构

数据结构总复习知识点 第一章 绪论 1、基本概念 数据结构,四种基本结构,逻辑结构和物理结构,元素(节点),抽象数据类型 2、算法,时间复杂度,频度(会计算) 第二章、线性表 1、基本概念 线性表:n个数据元素的有限序列,可插入和删除 数据项、记录、文件 2、顺序表 1)用一组地址连续的存储单元依次存储线性表的数据元素 2)顺序表特点:以相对(物理)位置来表示 3)是一种随机存取的存储结构 4) 阅读详情
//仅包含考研大纲中我不熟的部分,按照王道辅导书的顺序
//图片和例子,出自wiki
一.栈
1.括号匹配,
“(” 进栈
“)”匹配则出栈,否则报错
2.表达式
后序表达式
3.数组,矩阵的压缩存储
a.三角方阵,对称方阵

b.稀疏矩阵
struct xxx
{
 int row;
 int col;
 int value;
}
二.树
1.线索二叉树
把二叉树的空指针,替换为标签+前驱或者后继的指针
2.平衡二叉树的插入和删除
三.图
1.邻接矩阵,邻接表
2.最小生成树
prim 是找和当前集合相连的最小权边
kruskal 是随便找最小权边,只要不形成环
3.最短路径
Dijkstra 和prim很像
Floyd 像矩阵乘法,不过乘法规则为min{...}
4.拓扑排序
依次找到不依赖于其它点的点
5.关键路径
四.查找
1.B树
每个点的出度小于等于m,大于等于ceil(m/2)
B树的插入和删除
2.B+树
B+树的构建就是数据库索引的构建。
具体可以看: http://blog.youkuaiyun.com/hguisu/article/details/7786014
3.hash
其实是傻瓜式的方法
查找信息的时候后依然用关键字匹配,key-value,用key做关键字,key是hash函数的输入。
五.排序
1.插入排序
普通版:和选择排序相对照,介于冒泡和选择之间
升级版:折半插入排序,就是把普遍插入排序前面查找的过程改为折半查找
终极版:希尔排序,shell sort, http://zh.wikipedia.org/wiki/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F

例如,假设有这样一组数[ 13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10 ],如果我们以步长为5开始进行排序,我们可以通过将这列表放在有5列的表中来更好地描述算法,这样他们就应该看起来是这样:

13 14 94 33 82
25 59 94 65 23
45 27 73 25 39
10

然后我们对每列进行排序:

10 14 73 25 23
13 27 94 33 39
25 59 94 65 82
45

将上述四行数字,依序接在一起时我们得到:[ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ].这时10已经移至正确位置了,然后再以3为步长进行排序:

10 14 73
25 23 13
27 94 33
39 25 59
94 65 82
45

排序之后变为:

10 14 13
25 23 33
27 25 59
39 65 73
45 94 82
94

最后以1步长进行排序(此时就是简单的插入排序了)。

2.交换排序
普通版:冒泡
终极版:快速排序,quick sort, qsort
快排的关键在在于怎样选基准值,并把小于基准值和大于基准值的项分开。


3.选择排序
普通版:选择排序
升级版:堆排序
a.末尾插入元素,对应自下而上的调整,堆尾插入
b.改变首个元素,对应自上而下的调整,堆首删除(堆尾和堆首置换,然后自上而下调整)
两者均可以用来构建堆:
用a,相当于从前到后,每个元素插入现有的堆
用b,相当于从后向前,调整每个小堆(子堆)的跟
排序时:
相当于每次从堆中删除最大的元素(堆的第一个元素),和堆尾元素互换,然后自上而下调整


4.归并排序

5.基数排序

Original, unsorted list:

170, 45, 75, 90, 802, 2, 24, 66

Sorting by least significant digit (1s place) gives:

17 0, 9 0, 80 2, 2, 2 4, 4 5, 7 5, 6 6
Notice that we keep 802 before 2, because 802 occurred before 2 in the original list, and similarly for pairs 170 & 90 and 45 & 75.

Sorting by next digit (10s place) gives:

8 02, 2, 24, 45, 66, 1 70, 75, 90
Notice that 802 again comes before 2 as 802 comes before 2 in the previous list.

Sorting by most significant digit (100s place) gives:

2, 24, 45, 66, 75, 90, 170, 802

It is important to realize that each of the above steps requires just a single pass over the data, since each item can be placed in its correct bucket without having to be compared with other items.

Some radix sort implementations allocate space for buckets by first counting the number of keys that belong in each bucket before moving keys into those buckets. The number of times that each digit occurs is stored in an array. Consider the previous list of keys viewed in a different way:

170, 045, 075, 090, 002, 024, 802, 066

The first counting pass starts on the least significant digit of each key, producing an array of bucket sizes:

2 (bucket size for digits of 0: 17 0, 09 0)
2 (bucket size for digits of 2: 00 2, 80 2)
1 (bucket size for digits of 4: 02 4)
2 (bucket size for digits of 5: 04 5, 07 5)
1 (bucket size for digits of 6: 06 6)

A second counting pass on the next more significant digit of each key will produce an array of bucket sizes:

2 (bucket size for digits of 0: 0 02, 8 02)
1 (bucket size for digits of 2: 0 24)
1 (bucket size for digits of 4: 0 45)
1 (bucket size for digits of 6: 0 66)
2 (bucket size for digits of 7: 1 70, 0 75)
1 (bucket size for digits of 9: 0 90)

A third and final counting pass on the most significant digit of each key will produce an array of bucket sizes:

6 (bucket size for digits of 0: 002, 024, 045, 066, 075, 090)
1 (bucket size for digits of 1: 170)
1 (bucket size for digits of 8: 802)

At least one LSD radix sort implementation now counts the number of times that each digit occurs in each column for all columns in a single counting pass. (See the external links section.) Other LSD radix sort implementations allocate space for buckets dynamically as the space is needed.

附加:桶排序
 

六.不稳定的排序算法
1.选择排序
例:5 8 5 2 9,第一遍选择第一个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了
2.快速排序
例1:5 3 3 4 3 8 9 10 11,现在中枢元素5和3(第5个元素,下标从1开始计)交换就会把元素3的稳定性打乱,所以快速排序是一个不稳定的排序算法,不稳定发生在中枢元素和a[j] 交换的时刻。
例2:5 1 2 9 3  4 6 7 4 8,以5为基准,划分是会遇到9和4互换,导致4不稳定
3.希尔排序
每组是并行的,显然
4.堆排序
每次队首要和堆尾交换,显然

七.额外的空间
1.归并排序,O(n)
2.快速排序,递归调用的堆栈,O(logn)
3.基数排序,桶的队列,和桶的元素,O(n+队列数)

八.外部排序
1.先块内排序,然后块间用merge sort
2.多路合并,失败者树,很像堆的插入
3.置换选择,块内排序的另一种选择,不知道有什么好处
4.最佳归并树,就是Huffman树,使访问硬盘次数最小,感觉不太科学。。。

数据结构期末复习笔记(NEU版) 数据结构期末复习笔记 绪论 数据结构的分类 数据结构研究的内容 算法的重要特性 算法的设计要求 题目汇总 线性表 栈和队列 栈 队列 题目 树 二叉树 二叉树的遍历 线索二叉树 线索二叉树的查找 查找 静态查找表 顺序查找 二分查找(折半查找) 分块查找 动态查找表 二叉排序树 删除操作 平衡二叉树 哈希表 1、开放地址法 2、链地址法 3、散列表查找成功和失败的平均查找长度 排序 为什么将排序分为插入、选择、交换等几大类 排序算法的稳定性 排序中的常考点 阅读详情

相关推荐

数据结构与算法分析复习笔记(持续更新...欢迎指正)

数据结构与算法分析 文章目录数据结构与算法分析前言一、数据结构概述数据结构相关基本概念1. 数据2. 数据元素3. 数据项4. 数据对象5. 数据结构6. 程序结构7. 数据类型8. 算法基本结构简介1.从集合到结构体2.映射、函数、算法3.线性结构、树形结构、图形结构算法性能评价1.算法的时间复杂度二、线性结构( 线性表)三、树形结构四、图形结构 前言 复习408考研数据结构和学习蓝桥杯的笔记,也有相关的离散数学基础内容记录,本笔记以应试为主 持续更新ing 一、数据结构概述 数据结构相关基本概念

m0_52009789的博客 8531

数据结构复习

如有错误,敬请指出。祝大家都取得满意的成绩🎇

weixin_73558212的博客 2394

《数据结构》考前复习笔记

数据结构是研究数据的组织、存储、操作及算法实现的学科,涵盖线性结构、树形结构、图结构等,通过高效的数据组织方式优化算法性能,解决复杂问题。

Jason乐悠的博客 247

数据结构学习与复习笔记-绪论

的总称1.

waitingforone的博客 1277

数据结构复习ppt

数据结构复习ppt 华中科技大学计算机学院

保姆级教程:Unity编辑器汉化全流程(从下载到配置避坑指南)

本文提供Unity编辑器汉化的保姆级教程,涵盖从下载中文语言包到配置避坑的全流程。详细解析版本适配、文件系统交互及编辑器底层配置逻辑,帮助开发者高效完成汉化,解决常见报错问题,提升工作效率。

weixin_30825581的博客 155

数据结构(复习版)

顺序表(插入,删除,查找,定位),链表(单链表,双链表,循环链表),栈(先进后出FILO,判空,判满,push,pop,应用),队列(先进后出FIFO,循环队列,操作)已知两个长度分别为m和n的升序链表,若将他们合并为一个长度为m+n的降序链表,则最坏情况下的时间复杂度是O(max(m,n))设顺序表的长度为n,并设从表中删除元素的概率相等,在平均情况下,从表中删除一个元素需移动的元素个数是(n-1)/2。查找位序为k的元素(位序跟实际数组里面的排序是不一样的,数组是从0开始,但是我们找是从1开始找)

2303_76966107的博客 979

从零开始:用AutoLisp为AutoCAD定制专属工具栏(2023最新版)

本文详细介绍了如何利用AutoLisp语言为AutoCAD定制专属工具栏,以提升绘图效率。内容涵盖从环境配置、AutoLisp基础语法到实战开发的全过程,指导用户编写自动化脚本、封装功能函数,并最终通过CUI编辑器创建和部署个性化工具栏按钮,是2023年CAD用户实现工作流自动化与个性化的实用指南。

4k5l6j7h8的博客 299

数据结构期末复习笔记

背景:2021春季期末与好友多喝岩浆xx共同整理的复习笔记。 主要参考了老师的课件, 还有一些博客。(万分感谢好友,老师,还有乐于分享的博主们!) github 下载地址:复习笔记pdf+图解数据结构doc 百度网盘下载地址:链接:复习笔记pdf 提取码:m6yn 感想:一般来说大学应试的数据结构考的都是基本的知识点,不会特别难,但真正的学习数据结构光靠应试的复习是远远不够的。说实话我第一遍听课的时候也觉的很多知识似懂非懂,但是在期末考试提前很久就开始自己复习了,通过画图把每一个算法都去弄懂,尤其像KMP.

zyw2002的博客 5845

别再套用星形公式了!三角形接法PMSM的FOC控制,扇区判断与作用时间推导全解析

本文深入解析三角形接法永磁同步电机(PMSM)的FOC控制技术,重点探讨30度相位差对SVPWM扇区判断与电压矢量作用时间的影响。通过数学推导与实验验证,详细讲解修正后的扇区划分规则、作用时间计算公式优化方法,并提供可直接移植到STM32的代码实现,帮助工程师解决三角形接法特有的相电流重构与同步采样难题。

weixin_30689307的博客 468

【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

SAP PO 接口配置完整教程之二REST服务对接

XLevon的博客 1万+

数据结构复习笔记简介

数据结构复习笔记简介 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供的数据结构复习笔记,专为西南交通大学2020秋季学期数据结构A课程的学生设计。该资源文件名为“数据结构复习笔记(西南交通大学2020秋季学期数据结构A)V1.2-Keller_Wang.pdf”,旨在帮助同学们更好地复习和准备期末考试。 笔记背景 作者撰写这份笔记的初衷,源于教师在课程中提供的PPT未...

gitblog_06703的博客 389

从零构建智能ai语音助手:ESP32s3+Python+大语言模型实战指南

本文详细介绍了基于ESP32S3硬件和Python后端的智能语音助手系统开发指南。系统采用ESP32S3采集语音,通过WebSocket实时传输到Python后端处理,利用大语言模型实现自然语言理解和意图识别,再通过TTS合成语音返回。文章从系统架构、工作流程、技术实现(包括OPUS编码、WebSocket通信、ESP32音频处理)等方面进行了详细讲解,并提供了分阶段学习路线和常见问题解决方案。该项目展示了物联网技术与AI技术的融合应用,相比传统语音系统具有更高的灵活性和智能性,为开发者提供了完整的实现方案

Despacito0o的博客 2629

【亲测免费】 数据结构复习知识点总结笔记

数据结构复习知识点总结笔记 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一份数据结构复习知识点总结笔记,该笔记内容详尽,由作者根据本科课程《数据结构》整理而成。笔记来源于老师上课时的PPT,涵盖从线性表到查找排序的各个章节,对可能出现的考点进行了深入分析和总结。 本笔记结合了《王道考研数据结构》习题书的内容,对常考点和冷考点进行了明确区分,旨在帮助期末考生更好地复...

gitblog_06714的博客 334

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 608

ChatGPT充值,银行卡被拒绝,图文教程

ChatGPT充值,银行卡被拒绝

weixin_46713695的博客 2万+

2026《数据结构》考研复习笔记四(绪论)

数据结构双层for循环时间复杂度的分析

m0_73872164的博客 1719

11、ThingsBoard集群部署k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 990

数据结构复习笔记

一、绪论 1、数据结构术语 1.数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并 输入给计算机处理的符号集合。 2.数据对象:性质相同的数据元素的集合,数据的一个子集。 3.数据元素:数据元素是数据的基本单位,也叫做节点或记录。在计算机程序中通常作为一个整体进行考虑和处理。 4.数据项:数据项是数据的不可分割的最小单位。一个数据元素可由若干个数据项组成 2、数据结构三要素 数据存储结构:物理结构,数据真实存在计算机中的样子 顺序存储:存放在地址连续的存储单位里 链式存储:数据

wuyaxin 673

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2026《数据结构》考研复习笔记三(C++高级教程)

主要介绍了C++文件和流、异常处理、命名空间、模板与多线程的相关知识

m0_73872164的博客 1008

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

2026《数据结构》考研复习笔记一(C++基础知识)

C++基础知识,包含数据类型、lambda表达式、结构体等内容

m0_73872164的博客 1015

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

栈(JAVA实现) - 数据结构复习笔记

栈(JAVA实现) - 数据结构复习笔记 基本概念 栈(Stack):又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 特点: 先入后出(FILO):栈是一个先入后出的有序列表 栈的插入删除动作只允许在一端操作,允许插入和删除操作的一端,为变化的一端,叫

No1anWan6的博客 261
上一篇: 复习笔记——操作系统
下一篇: shell 之 tar
harryhare
博客等级 码龄17年 141粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值