数据结构
文章平均质量分 84
逻辑结构,物理结构
闲狗
没有道理去限制女孩子必须干什么,应该从事什么。她们的生活,她们对于梦想的追逐应该是百花齐放的。
展开
-
Hash 函数之冲突解决
接上一篇《数据结构检索(查找)之入土攻略(二)》:https://blog.csdn.net/wydyd110/article/details/82144549目录5 冲突排解5.1 开放地址法(Open Addressing)5.1.1线性探测法(Linear Probing)5.1.2 平方探测法(Quadratic Probing)5.1.3 双散列探测法(Doub...原创 2018-08-29 10:48:23 · 569 阅读 · 0 评论 -
数据结构索引之杀死攻略(一)
目录1 索引是啥???2 线性索引2.1 稠密索引2.2 稀疏索引(分块索引)2.3 二级线性索引2.4 倒排索引2.4.1 基于属性的倒排2.4.2 对正文文件的倒排这些年来,受尽索引的折磨,时常一脸懵逼,因此立志写一篇通俗易懂又不失专业性的索引攻略。1 索引是啥???风靡日本全球的“小黄书”——《大便书》的目录类似于一张索引表。...原创 2018-08-21 11:22:12 · 1157 阅读 · 1 评论 -
数据结构索引之杀死攻略(三)
接上一篇《数据结构索引之杀死攻略(二)》:https://blog.csdn.net/wydyd110/article/details/81945803目录4 位索引技术(位图索引BitMap Index)4.1 位图索引的故事4.2 位图索引是啥???4.3 位图索引的适用条件5 红黑树5.1 红黑树的特征5.2 红黑树的阶5.3 红黑树的插入5...原创 2018-08-24 10:19:41 · 457 阅读 · 0 评论 -
Hash 函数之入土攻略
接上一篇《数据结构检索(查找)之入土攻略(一)》:https://blog.csdn.net/wydyd110/article/details/82113893欢迎继续入坑数据结构之检索(查找),我保证这章将灰常“有趣”。目录4 散列表的检索4.1 散列函数的构造方法4.1.1 直接定址法4.1.2 除留余数法4.1.3 乘余取整法4.1.4 平方取中法4...原创 2018-08-28 11:03:28 · 991 阅读 · 0 评论 -
高级数据结构之猝死攻略(二)
接上一篇《高级数据结构之猝死攻略(一)》https://blog.csdn.net/wydyd110/article/details/82190471坚持不易,奖励一个小白脸来养养眼。目录3 Trie树3.1 等长字符树——26叉Trie3.2 不等长的字符树,加 “ * ” 标记3.3 压缩trie树3.4 二叉Trie树3.5 后缀树3.6 后缀数...原创 2018-08-30 17:52:12 · 817 阅读 · 0 评论 -
数据结构检索(查找)之入土攻略(一)
目录1 检索的基本概念2 线性表的检索2.1 顺序检索2.2 二分检索2.3 分块检索3 集合的检索1 检索的基本概念度娘作为中国最牛的中文搜索引擎,各种问题在其中都会找到答案,其中不乏一些辣眼的奇葩提问。不好意思,以上在扯犊子。搜索引擎是检索的典型应用,当我们在搜索引擎上输入一个关键字,点击“搜索”按钮时,搜索引擎会带着关键字奔向索...原创 2018-08-27 15:41:17 · 1107 阅读 · 1 评论 -
数据结构索引之杀死攻略(二)
接上一篇《数据结构索引之杀死攻略(一)》:https://blog.csdn.net/wydyd110/article/details/81904483目录3 动态索引3.1 开场白3.2 B树(B-树)3.2.1 B树的特征3.2.2 B树的查找3.2.3 B树的插入3.2.4 B树的删除3.3 B+树3.3.1 B+树的特征3.3.2...原创 2018-08-22 16:01:00 · 656 阅读 · 0 评论 -
高级数据结构之猝死攻略(一)
从基础数据结构一路杀到高级数据结构,历尽虚脱,在此奖励自己一个女神,希望能继续坚持。本文参考自:张铭《数据结构与算法》目录1 多维数组1.1 用数组表示特殊矩阵1.1.1 三角矩阵1.1.2 对称矩阵1.1.3 对角矩阵(diagonal matrix)1.1.4 稀疏矩阵1.1.5 稀疏矩阵的十字链表2 广义表L= (x0,x1,…,xi,…,...原创 2018-08-29 18:08:49 · 3498 阅读 · 3 评论 -
数据结构文件管理和外排序之垂死攻略
今天学修电脑。目录1. 存储器1.1 主存储器(primary memory或main memory,简称“内存”,或“主存”)1.1.1 DRAM(Dynamic Random Access Memory)——便宜 1.1.2 SRAM —— 贵1.1.3 DRAM与SRAM的比较1.1.4 ROM(Read - Only Memory)只读存储器...原创 2018-11-07 09:42:24 · 1788 阅读 · 0 评论 -
数据结构内排序之惨死攻略(二)
接上回合《数据结构内排序之惨死攻略(一)》听闻今天还要学数据结构,心中堵着一片乌云。就算受低潮情绪影响也要坚持学下去啊。目录5 归并排序5.1 栗子5.2 代码实现5.3 归并算法优化5.3.1 R.Sedgewick优化5.3.2 R.Sedgewick代码实现5.4 算法分析6 分配排序和索引排序6.1 桶式排序6.1.1 栗子...原创 2018-10-30 11:46:23 · 621 阅读 · 0 评论 -
数据结构内排序之惨死攻略(一)
目录1 基本定义2 插入排序2.1 直接插入排序(Straight Insertion Sort)2.1.1 栗子2.1.2 代码实现2.1.3 算法分析2.2 Shell排序2.2.1 栗子——增量每次除以2递减2.2.2 代码实现2.2.3 算法分析2.2.4 增量选择3 选择排序3.1 直接选择排序3.1.1 栗子3.1.2 代...原创 2018-10-24 10:38:57 · 746 阅读 · 0 评论 -
数据结构栈与队列之作死攻略
漫画乱入,供自己放轻松。目录1 栈的是啥?2 栈的实现方式2.1 顺序栈(Array-based Stack)2.2 链式栈(Linked Stack)2.3 共享栈2.4 栈的应用-四则运算表达式求值2.3.1 后缀表达式2.3.2 中缀表达式2 队列2.1 队列是啥?2.2 队列的实现方式2.2.1 顺序队列2.2.2 循...原创 2018-10-17 14:48:45 · 566 阅读 · 0 评论 -
数据结构线性表之吐血攻略
这是一篇闲狗写给闲狗看的线性表攻略。1 线性表1.1 线性表的概述线性表简称表,是零个或多个元素的有穷序列1.2 线性表类模板C++版template <class T> class List { void clear(); // 置空线性表 bool isEmpty(); // 线性表为空时,返回 true //在表尾添加一个元素...原创 2018-10-17 10:42:27 · 636 阅读 · 1 评论 -
数据结构二叉树之闲死攻略(二)
接上一篇《数据结构二叉树之闲死攻略(一)》不要难过,其实数据结构是很有趣的,很......目录4 二叉搜索树(Binary Search Tree)4.1 BST的特性(1) 顺序性(左<根<右)(2)单调性(小到大)4.2 BST的查找4.2 BST的插入4.3 BST的删除(1)要删除的是叶结点(2)要删除的结点只有一个孩子结点(...原创 2018-10-10 11:41:48 · 872 阅读 · 0 评论 -
数据结构二叉树之闲死攻略(一)
这是一篇闲狗都能看懂的二叉树教程,因为是闲狗写的。目录1 二叉树的概念1.1 二叉树是what?1.2 二叉树的五种基本形态1.3 二叉树的相关术语1.4 完美二叉树(Perfect Binary Tree)1.5 满二叉树(Full Binary Tree)1.6 完全二叉树(Complete Binary Tree)1.7 扩充二叉树Extended b...原创 2018-10-08 16:05:14 · 839 阅读 · 4 评论 -
数据结构图之上吊攻略
六度分割理论(小世界理论,六度空间理论):你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个中间人你就能够认识任何一个陌生人。从陈家庄到张家村,怎么走最快呢?怎么修公路使得村村通的花费最少呢? 以上例子都是图在实际中的应用。目录1 图的定义与术语1.1 无向图1.2 有向图(directed graph)(1) 有向图(2)有向完全图...原创 2018-10-05 15:15:07 · 1331 阅读 · 4 评论 -
数据结构树之切腹攻略
树 —— 一种一对多的数据结构。目录1. 树的相关术语2. 树形结构的各种表示法2.1 树形表示法2.2 形式语言表示法2.3 文氏图表示法2.4 嵌套括号表示法2.5 凹入表表示法2.6 图书目录,杜威表示法3. 森林3.1 树转化成二叉树3.2 二叉树转化成树3.3 森林转化成二叉树3.4 二叉树转化成森林4. 森林的遍历4....原创 2018-10-05 15:13:36 · 4241 阅读 · 1 评论 -
模式匹配Pattern Matching
目录 1.模式匹配(pattern matching)的概念2. 制造模式匹配的测试串3. 模式匹配蛮力算法(Brute-Force,也成Naive朴素算法)3.1 Version 13.2 Version 2:(与Version 1的不同在于i,j)3.3 算法分析(1)最差情况(2)最佳情况 —— 找到(3)最佳情况 —— 没找到4. 模...原创 2018-07-23 15:38:59 · 20158 阅读 · 0 评论 -
优先队列学习笔记
一. 应用需求1. 优先级队列:其中的元素接受的访问次序未必是先进先出。每次从队列中取出的是具有最高优先权的元素。2.夜间门诊假设某家医院在夜间只安排了一位医生值班,那么他要按照什么样的次序为到来的病人提供服务呢?如果是一般的感冒发烧,自然是采用先来先服务的次序。倘若某位病人发生了骨折,相对于一般的病人,他更应优先地接收处置和治疗。而即便是在这位骨折病人接收处置的过程中,如果又有一位心脏病发的病人...原创 2018-05-22 18:38:20 · 263 阅读 · 0 评论 -
伸展树学习笔记之双层伸展
一. 双层伸展构思精髓:向上追溯两层,而非一层。反复考察祖孙三代:g=parent(p),p=parent(v),v根据它们的相对位置,经两次旋转使得v上升两层,成为子树根。 二. 子孙异侧与AVL树双旋完全等效与逐层伸展别无二致三. 子孙同侧 四. 点睛之笔 第一次旋转在祖父的位置上进行,而非父亲的位置。step1: step2: ...原创 2018-04-25 18:09:22 · 919 阅读 · 0 评论 -
伸展树学习笔记之逐层伸展
伸展树一. 局部性Locality: 刚被访问过的数据,极有可能很快地再次被访问,这一现象在信息处理过程中屡见不鲜。 BST: 刚刚被访问过的节点,极有可能很快地再次被访问;下一个将要访问的节点,极有可能就在刚被访问过节点的附近。 连续的m次查找(m>>n=|BST|),采用AVL共需O(mlogn)时间二. 自适应调整 对于典型的线性结构列表,所...原创 2018-04-25 15:37:55 · 368 阅读 · 0 评论 -
散列学习笔记(一)
一. 散列冲突 M为素数时,数据对散列表的覆盖最充分,分布最均匀。二. MAD法1. 除余法的缺陷1) 不动点:无论表长M取值如何,总有hash(0)=02) 零阶均匀:[0,R)的关键码,平均分配至M个桶;但相邻关键码的散列地址也必相邻。2. MAD=multiply-add-divide 取M为素数,a>0 , b>0 , a % M != 0 hash...原创 2018-05-02 18:09:24 · 567 阅读 · 1 评论 -
AVL(平衡二叉搜索)树学习笔记
AVL=BBST一. 平衡因子 平衡因子 = 节点的左子树高度 - 右子树高度如图:节点2的平衡因子为1-0=1 节点11的平衡因子为2-1=1 其他同理总结:所谓AVL树就是其中所有节点的平衡因子不超过1也不小于-1。二. AVL=适度平衡1.一棵规模为n的AVL树,高度不超过O(logn) 2...原创 2018-03-01 15:27:18 · 443 阅读 · 0 评论 -
二叉搜索树(BST)学习笔记(二)之平衡与等价
一. 极端退化 BST在最坏情况下的时间复杂度为树的高度,未能得到有效的控制。 在极端条件下,所有节点的度数都不超过1二. 平均高度1.随机生成 对于任何一组关键码词条,考察它所有可能的排列,将关键码依次插入一颗初始值为空的树。当关键码为n时, 可能的生成序列有n!种。 n!颗BST树平均高度为logn。(有重复) 2.随机组成 将所有的n...原创 2018-02-28 15:38:00 · 1025 阅读 · 1 评论 -
二叉搜索树(BST)学习笔记(一)
看完邓俊辉的《数据结构(第三版)》中二叉搜索树BST后的学习总结二叉搜索树(Binary Search Tree) 一.循关键码访问call-by-key1.二叉搜索树由一组数据项构成,数据项之间,依照各自的关键码key彼此区分。类似于汽车的车牌号。2.关键码之间支持大小比较与相等比对。3.数据集合中的数据项统一地表示和实现为词条entry形式。 二.二叉搜索树的特性 二叉搜索树...原创 2018-01-25 16:37:41 · 517 阅读 · 0 评论 -
B树学习笔记之B树的动机
开场白:B树等效于BST。B树最初也是最主要的功能在于弥合不同存储级别之间在访问速度上的巨大差异,实现搞笑的I/O。现实中,内存的容量有限,系统存储容量的增长速度<<应用问题规模的增长速度。存储容量规模分级:物理上,存储器的容量越大/小,访问速度就越慢/快。类似于乘火车去广州采购粉笔,采购一支与采购一千支甚至一万支,其时间成本几乎是一样的典型的存储系统大多采用批量式的方式来支持读写操作...原创 2018-04-26 14:04:54 · 228 阅读 · 0 评论 -
散列学习笔记(二)——排解冲突
1. 多槽位(multiple slots)(1)桶单元细分成若干槽位slot,存放(与同一单位)冲突的词条 一个长度为23的散列表,每一个桶都被分成了3个槽位,将24个词条插入其中。进行查找时,除了需要根据关键码确定对应的桶单元地址,还需在桶中遍历所有的槽位。(2)只要槽位数目不多,依然可以保证O(1)的时间效率。 槽位预留过多,空间浪费 无论预留多少,极端情况...原创 2018-05-04 17:29:31 · 865 阅读 · 0 评论 -
红黑树学习笔记之红黑树的删除
1. 红黑树的规则 2. 双黑缺陷 3 BB-1通过关键码的旋转,消除超级节点的下溢。四. BB-2R4. BB-2B5. BB-36. 归纳 ...原创 2018-04-26 17:44:59 · 380 阅读 · 0 评论 -
红黑树学习笔记之红黑树的插入
附加知识点:1. 红黑树的规则2.“3+4”重构无论插入还是删除,无论是单旋还是双旋,最终效果应该都是这样一种形式。一. 双红缺陷1. 插入关键码e,并设T中文本不含e2. x=insert(e)必为末端节点,设x的父亲p=x->parent存在3. 将x染红(除非它是根),规则124依然满足,而3则不一定4. 双红(double-red):新插入的节点x与它的父亲p同时为红色=>双红...原创 2018-04-26 17:44:34 · 635 阅读 · 0 评论 -
红黑树学习笔记之红黑树的动机
一. 初认红黑树节点具有颜色,红色或者黑色。二. 持久性无论是线性结构:向量,列表,栈,队列半线性结构:树非线性结构:图每当经过一次动态的操作,使得其中的逻辑结构发生变化之后,它都会随即完全的转入新的状态,同时将此前的状态完全的遗忘掉。这类结构因此称作ephemeral data structure。而Persistent structure支持对历史版本的访问。蛮力实现:每个版本独立保存;各版本...原创 2018-04-26 17:43:22 · 334 阅读 · 0 评论 -
B树学习笔记之B树的删除
B树的下溢发生于删除关键码后违反了B树的性质 。一. 旋转如果左右兄弟存在,则间接向左右兄弟借关键码 二. 合并B树高度的减少只会发生于根节点的两个孩子合并 。三. 实例1. 删除249不急于合并,先左顾右盼,向有兄弟接一个关键码。删除操作顺利结束。2. 删除619664没有左兄弟,右兄弟处于即将下溢的边缘临界状态,旋转技巧已不适用,选择合并。此时,父节点发生了下溢,继续合并。整棵B树的高度...原创 2018-04-26 17:41:25 · 13918 阅读 · 3 评论 -
B树学习笔记之B树的插入
一. 上溢插入新的关键码后违反了B树的性质,称为B树的上溢,此时需做分裂。二. 分裂1. 中位数2.等效于在父节点插入了一个新的关键码,父节点此时同样存在发生上溢的风险。三. 再分裂B树高度的增加一定伴随着分裂到根 。四. 实例这时一棵4阶B树,每个节点的分支至多是4,至少是2;等价的每个节点所包含的关键码数至多为3,至少为1。1. 插入555此时,该节点的关键码总数不超过3,插入操作顺利结束。2...原创 2018-04-26 17:41:00 · 1604 阅读 · 1 评论 -
B树学习笔记之B树的查找
只载入必需的节点到内存,尽可能减少I/O操作,非必需的存到外存。对于处于活跃状态的B树,根节点常驻于内存每个节点的关键码均已存成向量在存储了n个元素的4阶B树中查找,单个节点进行一次查找的时间复杂度为O(1)一. 实例这是一棵5阶的B树,(3,5)树,每个节点的分支数不得超过5,同时除根节点,一般节点所拥有的分支数也不得少于3;每个节点至多拥有4个关键码,除根节点外每个节点至少拥有2个关键码。1....原创 2018-04-26 17:40:25 · 6229 阅读 · 1 评论 -
B树学习笔记之B树的结构
每一个节点可有多个分叉所有底层节点的深度完全一致B树矮宽一. 多路平衡1. B树的设计者将其定义为一种平衡的多路(multi-way)搜索树 两层两层去考察节点,每一个节点及它的左右孩子合成一个超级节点。二. 还是I/O多级存储系统中使用B-树,可针对外部查找,大大减少I/O次数若有n=1G个记录,每次查找需要log(2,2^30)=30次I/O操作,每次只读出一个关键码,得不偿失。...原创 2018-04-26 14:48:30 · 1028 阅读 · 0 评论 -
快速排序(Quicksort)学习笔记
看完邓俊辉的《数据结构(第三版)》中快速排序后的学习总结一.快速排序(Quicksort):基于分治策略的又一经典算法。类似于归并排序(Mergesort)。将序列分为前后两个子序列,并对这两个规模更小的子序列进行递归。Quicksort和Mergesort都采用了分治策略。但Quicksort要求前一序列中的任何元素在数值上都不得超过后一序列中的任意元素。二.轴点(p原创 2018-01-22 11:09:11 · 610 阅读 · 0 评论