邓公的数据结构一直好评如潮,可惜我如今才开始学习它.QAQ 昨天,<数据结构 (2020 春)>的讲义已经推到清华大学云盘上了.苦于 10 拼页的打印版不易在 PC 上阅读(手机上更是如此),而电子版又过于分散,因此制作了一份带索引的合并版本,现分享给大家:…
二叉搜索树(Binary-Search-Tree)--BST 要求:AVL树是BBST的一个种类,继承自BST,对于AVL树,不做太多掌握要求 四种旋转,旋转是BBST自平衡的基本,变换,主要掌握旋转的思想. 3+4重构,重点明白为什么可以3+4重构,而不是使用旋转 对于AVL插入和删除做了解,知道其为什么比不过红黑树就可以了. 循关键码访问(call-by-key) 关键码:就是所谓的key 条件: 关键码之间支持大小比较 支持相等比对 在BST中,所有数据都统一实现和表示为entry(ent…
B树 概述 动机: B树实现高速I/O 640K如何"满足"任何实际需求了-- 源自比尔·盖茨的一个笑话 前提知识 高速缓存 为什么高速缓存有效? 不同容量的存储器,访问速度差异悬殊,磁盘和内存访问速度的量级相差\(>10^5\) 如果将访问内存比喻为1秒,那么访问外存则相当于1天 因此我们需要尽量减少IO次数 分级I/O 俩个相邻存储级别之间的数据传输,统称为IO操作 CPU -> RAM -> DISK -> ARRAY 访问速度依次递减,存储容量依次递增…
数据结构之线性表(python版) 单链表 1.1  定义表节点 # 定义表节点 class LNode(): def __init__(self,elem,next = None): self.elem = elem self.next = next_ 1.2  单向链表 # LList 类的定义 单链表 (单向) class LList(): def __init__(self): # 这里并没有继承 LNode类 在加入数据时候引用了 LNode类 self.head = None def…
01-复杂度3 二分查找(20 分) 本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */ }; L是用户传入的一个线性表,其中…
声明:数据结构与算法系列博文参考了<天勤高分笔记>.<王道复习指导>.C语言中文网.非商业用途,仅为学习笔记总结! 第一章<绪论> 一.基本概念及入门常识  ////(一)数据结构的基本概念和术语//// . 数据 数据是信息的载体,是描述客观事物属性的数.字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合. . 数据元素 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理.一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位.…
在该书的527页中18.6理论题中,书中这样写道"完全结点是指每个结点都有两个孩子.证明,完全二叉树的结点数加1等于叶子树." 初看此题目,本人觉得很纳闷,再细细想之,发现似乎是个伪命题. 后来把原版书拿过来,发现书中是这样写的:"A full node is a node with two children. Prove that in a binary tree the number of full nodes plus 1 equals the number of le…
第五章<数组> 一.概念 根据数组中存储的数据元素之间的逻辑关系,可以将数组分为 : 一维数组.二维数组.….n维数组.n维数组中,维数 n 的判断依据是:根据数组中为确定元素所在位置使用的最少的下标个数.例如,二维数组中想唯一确定一个元素的位置,至少需要使用 2 个下标, a[1][1]:行坐标为 1,列坐标为 1 的数据元素的值. 二.数组VS顺序表 ①数组作为一种数据类型,作用是将类型相同的数据存储在一整块内存中,数组中存储的数据之间没有任何逻辑关系,谁也不认识谁.②顺序表作为线性表的存…
前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比较高的.今天就来聊一下基数排序算法的原理以及代码的具体实现. 一.基数排序算法示意图 下方的基数排序算法的实现是利用"桶"来实现的,首先我们创建10个桶,然后按照基数入桶,基数的取值是从数字的低位到高位以此取值.我们还是以[62, 88, 58, 47, 62, 35, 73, 51, 9…
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __init__(self, max=8): self.max = max #创建默认为8 self.num = 0 self.date = [None] * self.max #list()会默认创建八个元素大小的列表,num=0,并有链接关系 #用list实现list有些荒谬,全当练习 #self.las…