随笔分类 -  王道-考研-数据结构

随便学学
摘要:快速排序 排序思想 1. 选定Pivot中心轴 2. 将大于Pivot的数字放在Pivot的右边 3. 将小于Pivot的数字放在Pivot的左边 4. 分别对左右子序列(此时有左右2个子表),重复前三步操作。 5.注意:第4步中,如果左右子表元素 == 1,那就不用动,证明排序完了。 来个动画演示 阅读全文
posted @ 2022-10-04 14:24 咸瑜 阅读(71) 评论(0) 推荐(0) 编辑
摘要:看个动画先,急什么啊 笑死。。。。希尔这孩子打小就聪明 我笑了。 这玩意就是直接插入排序的优化版本,希尔这孩子 太调皮了8 换句话讲: 一开始我们选一个d,这个d是 “长度 / 2 ”而来的【也可以不是/2 但/2用的多】 然后以d为间距,选取距离 d 距的元素,然后进行划分为一组一组,进行直接插入 阅读全文
posted @ 2022-10-02 15:34 咸瑜 阅读(27) 评论(0) 推荐(0) 编辑
摘要:插入排序分为 直接插入 和 折半插入排序 [ ] 直接插入排序 [ ] 折半插入排序 1.算法思想 用我自己的话说: 一开始选中第二个元素,然后把之前的元素看做已经是排好序的,然后一直对比,如果选中的元素比前面一个值更小或更大,那么值进行右移,直到选中比前面一个值更小或更大。 直接插入排序 代码实现 阅读全文
posted @ 2022-10-01 20:16 咸瑜 阅读(122) 评论(0) 推荐(0) 编辑
摘要:图 G 是由顶点集 V 和边集 E 组成,记为: G=(V,E) 其中, V(G) 表示图 G 中顶点的有限非空集; E(G) 表示图 G 中顶点之间的关系(边)的集合。 |V| 表示图 G 中顶点的个数, 阅读全文
posted @ 2022-09-27 21:44 咸瑜 阅读(76) 评论(0) 推荐(0) 编辑
摘要:二叉树的应用 1. 二叉排序树 BST,也称二叉查找树。 二叉排序树或者为空树,或者为非空树,当为非空树时有如下特点: 若左子树非空,则左子树上所有结点关键字值均小于根结点的关键字。 若右子树非空,则右子树上所有结点关键字值均大于根结点的关键字。 左、右子树本身也分别是一棵二叉排序树。 $$ 左子树 阅读全文
posted @ 2022-09-25 16:19 咸瑜 阅读(243) 评论(0) 推荐(0) 编辑
摘要:7. 线索二叉树 7.1. 线索二叉树的概念 线索化: 若无左子树,则将左指针指向其前驱结点; 若无右子树,则将右指针指向其后继结点。 先序遍历:124536 中序遍历:425163 后序遍历:452631 线索二叉树的结点结构 | ltag | lchild | data | rcli 阅读全文
posted @ 2022-09-22 21:14 咸瑜 阅读(152) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历 按照某条搜索路径访问树中的每个结点,树的每个结点均被访问一次,而且只访问一次。 1. 先序遍历 若二叉树非空: 访问根结点。 先序遍历左子树。 先序遍历右子树。 void PreOrder(BiTree T) { if (T != NULL) { visit(T); PreOrder( 阅读全文
posted @ 2022-09-22 21:06 咸瑜 阅读(142) 评论(0) 推荐(0) 编辑
摘要:1. 树的基本概念 树是 nn0 个结点的有限集合,n=0 时,称为空树。 而任意非空树应满足: 有且仅有一个特定的称为根的结点。 当 n>0 时,其余结点可分为 mm0 个互不相交的有限集合,其中每一个集合本身又是一棵树,称为根结点的子树。 n 阅读全文
posted @ 2022-09-19 20:00 咸瑜 阅读(149) 评论(0) 推荐(0) 编辑
摘要:串 1. 定义 串,即字符串(String)是由零个或者多个字符组成的有序序列。一般记为: S=a1a2...ann>0 S 为串名。单引号(或双引号)括起来的字符序列是串的值。 a1 可以是字母、数字或其他字符。 串中字符的个数 n 为串的长 阅读全文
posted @ 2022-09-14 20:38 咸瑜 阅读(161) 评论(0) 推荐(0) 编辑
摘要:3. 双端队列 3.1. 定义 双端队列:只允许从两端插入、两端删除的线性表。 输入受限的双端队列:只允许从一端插入、两端删除的线性表。 输出首先的双端队列:只允许从两端插入、一端删除的线性表。 3.2. 问题 若数据元素输入序列为:1,2,3,4,则哪些输出序列是合法的?哪些是非法的? $$ A^ 阅读全文
posted @ 2022-09-12 10:55 咸瑜 阅读(178) 评论(0) 推荐(0) 编辑
摘要:队列【循环队列】 1. 队列的顺序实现 1.1. 定义 用顺序存储方式实现的队列。 #define MaxSize 10 typedef struct { ElemType data[MaxSize]; int front, rear; // 队头、队尾指针 } SqQueue; $MaxSize* 阅读全文
posted @ 2022-09-12 10:21 咸瑜 阅读(58) 评论(0) 推荐(0) 编辑
摘要:栈和队列 三要素: 逻辑结构 数据的运算 存储结构(物理结构) 栈和队列都是操作受限的线性表。 1.1. 定义 栈是只允许在一端进行插入或删除操作的线性表。 栈顶:允许插入和删除的一端。 栈底:不允许插入和删除的一端。 空栈 栈顶元素 栈底元素 进栈顺序: $$ a_1->a_2->a_3->a_4 阅读全文
posted @ 2022-09-10 19:50 咸瑜 阅读(83) 评论(0) 推荐(0) 编辑
摘要:9. 顺序表 V.S 链表 三要素: 逻辑结构 物理结构/存储结构 数据的运算/基本操作 | | 顺序表 | 链表 | | | | | | 随机存取 | 支持 | 不支持 | | 存储密度 | 高 | 不高 | | 存储空间 | 大片连续 | 小且离散 | | 改变容量 | 麻烦 | 方便 | 基本 阅读全文
posted @ 2022-09-09 17:23 咸瑜 阅读(43) 评论(0) 推荐(0) 编辑
摘要:双链表 typedef struct DNode { ElemType data; struct DNode *prior, *next; } DNode, *DLinkList; 1. 初始化 // 初始化一个双链表,带头结点 bool InitDLinkList(DLinkList &L) { 阅读全文
posted @ 2022-09-08 11:22 咸瑜 阅读(21) 评论(0) 推荐(0) 编辑
摘要:不考研嘻嘻····插本随便复习一下 --顺序表-- 按位查找 int GetElem(SqList L, int i) { // i 的值必须是合法的位序 if (i < 1 || i > L.length) { return false; } return L.data[i - 1]; } 时间复 阅读全文
posted @ 2022-09-05 09:54 咸瑜 阅读(50) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示