数据结构
文章平均质量分 96
黄智霖-blog
骨灰级技术爱好者
展开
-
换个思维理解B+树索引
假设有一张表:create table i_t( `num` int; `age` int)现在插入5条数据:insert into i_t value(3,18);insert into i_t value(4,19);insert into i_t value(1,20);insert into i_t value(2,25);insert into i_t value(5,12);现在我们要来设计数据库的存储模型,这五条数据最终需要存储在磁盘中,那么直接...原创 2021-03-28 13:30:30 · 5278 阅读 · 6 评论 -
数据结构与算法(二):数组
注:我们先由简到难总结一下常用的数据结构,如简单数组、链表、散列表、队列、栈、树、图等等,最后再来研讨算法。一、线性表线性表是很基本的一种数据结构,就如字面意思一样,它把若干数据线性组合在一起:每个元素都最多只有前相邻和后相邻元素,也就是元素之间首尾相接。典型的线性表结构有数组、链表、栈、队列等。它有一些特征(摘自百度百科): 1.集合中必存在唯一的一个“第一元素”。...原创 2019-03-23 19:26:53 · 16794 阅读 · 0 评论 -
数据结构与算法(三):链表
一、单向链表上一篇文章我们提到了,和数组一样,链表也属于线性表结构,但是链表是链式的,而数组是顺序的。它和数组最大的区别就是,它的元素存储并不依赖连续的内存空间,元素之间使用指针来实现逻辑顺序。如果创建一个长度为4的数组,其内存布局可能是下图这样,它要求元素的内存空间必须连续以实现常量阶的寻址操作,但是如果内存中没有这么大的整块儿空间,那么内存分配会失败。而如果是链表结构的话,每个...原创 2019-04-01 14:36:10 · 9224 阅读 · 1 评论 -
数据结构与算法(四):栈与应用
一、定义栈是一种操作受限的线性表。之所以说它操作受限,是由于其只能在一端插入和删除数据。这一端叫做“栈顶”,另外一端则为“栈底”。插入的操作我们通常称之为“PUSH”(入栈),删除的操作我们通常称之为“POP”(出栈)。所以它具有FILO(先进后出)的特性。如果栈满了,我们是不允许再继续入栈的,称这种情况为“栈上溢”,对应如果栈内为空,也是不允许继续出栈的,这种情况为“栈下溢”。这就像餐馆里的...原创 2019-04-26 10:40:29 · 8600 阅读 · 2 评论 -
数据结构与算法(五):队列与应用
一、定义和栈一样,队列也是一种操作受限的线性表:它只允许在表的前端进行删除操作,在表的后端进行插入操作,按照这个特性,先插入的数据会被先移除,所以队列是一种先进先出(FIFO)的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头,而插入操作我们一般称为“入队”,删除操作称为“出队”。队列也是一种抽象的数据结构,可以用数组实现(顺序队列),也可以用链表实现(链式队列)。二、实现...原创 2019-07-21 02:28:15 · 5189 阅读 · 1 评论