随笔分类 - 数据结构和算法
摘要:概述 位图(BitMap)使用二进制的比特位来表示一个数是否存在,比如一个字节占 8 个比特位,这样就能用该字节表示 1-8,对应比特位为 1 表示对应数字存在,为 0 则不存在,大大节约存储空间 位图的 Java 实现 在 java.util 包中有官方的位图实现 BitSet,我们也可以自己实现
阅读全文
摘要:概述 图是由有穷非空集合的顶点和顶点之间的边组成的集合,通常表示为 G(V,E)。G 表示一个图,V 是 图 G 顶点的集合,E 是图 G 边的集合。在图形结构中,数据之间具有任意联系,任意两个数据之间都可能相关,可用于表示多对多的数据结构 如果从顶点 V1 到 V2 的边没有方向,则称这条边为无向
阅读全文
摘要:概述 红黑树(Red-Black Tree,R-BTree)是一种自平衡的二叉查找树,在红黑树的每个节点都多出一个存储位表示节点的颜色,颜色只能是红(Red)或者黑(Black)。 红黑树的特性如下: 每个节点或者是黑色的,或者是红色的 根节点是黑色的 每个叶子节点都是黑色的,这里的叶子节点指的是最
阅读全文
摘要:概述 跳跃表(SkipList)是链表加多级索引组成的数据结构。链表的数据结构的查询复条度是 O(N)。为了提高查询效率,可以在链表上加多级索引来实现快速查询。跳跃表不仅能提高搜索性能。也能提高插入和删除操作的性能。索引的层数也叫作跳跃表的高度 查找 在跳跃表的结构中会首先从顶层开始查找,当顶层不存
阅读全文
摘要:计算机中数据的存储 一般而言,我们都是在内存中处理数据,但假如我们要操作的数据集非常大,内存无法处理了,在这种情况下对数据的处理需要不断地从硬盘等存储设备中调入或调出内存页面。 对外存设备的读写,效率并不乐观。为了降低对外存设备的访问次数,我们需要新的数据结构来处理这个问题。之前学习过的树,一个结点
阅读全文
摘要:八种排序算法可以按照如图分类 前置知识 1. 算法稳定性 在一个序列中,能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变(A1 = A2,排序前 A1 在 A2 前面,排序后 A1 还在 A2 前面) 2. 时间复杂度 时间复杂度是用于衡量一个算法的运算时间的一个描述,常用大 O 来表示
阅读全文
摘要:概述 对于一组元素 [7, 3, 10, 12, 5, 1, 9] 可以有很多种存储方式,但无论使用哪种数据结构,都或多或少有缺陷。比如使用线性结构存储,排序方便,但查找效率低。二叉排序树的特点就是能在保证元素有序的同时,提高查找的效率。 二叉排序树的定义 二叉排序树,也叫二叉查找树,二叉搜索树,英
阅读全文
摘要:树的概述 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。形同下图。 树有如下基本概念: 根结点 根结点是树的一个组成部分,也叫树根。每一颗树都有且仅有一个根结点。它是同一棵树中除本身外所有结点的祖先,没有父结点。按上图的树结构来
阅读全文