斜堆 2023-09-28 2023-09-28 数据结构与算法 / 数据结构 10 分钟读完 (大约1556个字)斜堆一、什么是斜堆?斜堆(Skew Heap),也称斜树(Skew Tree),自适应堆(Self-Adjusting Heap),是一种自平衡二叉堆数据结构。 斜堆是左倾堆(Leftist Heap)的一个变种,只是斜堆的节点中没有 NPL 这个属性而已。 斜堆的主要特点包括: 算法, 数据结构, 堆, 斜堆 阅读更多
左倾堆 2023-09-27 2023-09-27 数据结构与算法 / 数据结构 13 分钟读完 (大约1889个字)左倾堆一、什么是左倾堆?左倾堆(Leftist Heap),也称为左偏树(Leftist Tree)、左偏堆,最左堆等。 和二叉堆(即常见的堆,基于数组实现的完全堆)一样,左倾堆也是优先队列的一种实现方式。 只不过左倾堆具有一些特殊的性质: 算法, 数据结构, 堆, 左倾堆 阅读更多
KMP 算法 2023-03-28 2023-09-28 数据结构与算法 / 字符串匹配 17 分钟读完 (大约2557个字)KMP 算法KMP 算法是一种字符串匹配算法,可以在 O(n+m) 的时间复杂度内实现两个字符串的匹配。 KMP 算法是根据三位作者(D.E.Knuth,J.H.Morris 和 V.R.Pratt)的名字来命名的,全称是 Knuth-Morris-Pratt 算法。 一、暴力:一次滑一位最简单的方式就是暴力逐位匹配,比如: 算法, KMP 算法 阅读更多
BF 算法 2023-03-28 2023-09-28 数据结构与算法 / 字符串匹配 3 分钟读完 (大约464个字)BF 算法BF 算法,即 Brute Force,暴力匹配算法,也叫朴素匹配算法。 一、原理所谓的暴力匹配,就是: 算法, BF 算法 阅读更多
堆排序 2023-02-26 2023-10-06 数据结构与算法 / 排序算法 5 分钟读完 (大约761个字)堆排序一、什么是堆排序? 基于堆实现的排序算法 利用堆顶的有序性(最大值或最小值)来实现对数组的排序 二、为什么要用堆排序? 算法, 排序, 堆排序 阅读更多
索引堆 2023-02-26 2023-09-27 数据结构与算法 / 数据结构 11 分钟读完 (大约1613个字)索引堆一、什么是索引堆?索引堆(Index Heap)是二叉堆的一个变种,是二叉堆的一种增强。 相比于二叉堆只能访问堆顶元素,索引堆可以通过索引访问堆中的任意元素。 比如下面的索引堆: 12345 1(30) / \ 4(28) 3(16) \ / 5(22) 2(12) 除了可以直接访问堆顶元素 30,还可以通过索引访问其他元素: 算法, 数据结构, 堆, 索引堆 阅读更多
堆 2023-02-26 2023-09-27 数据结构与算法 / 数据结构 13 分钟读完 (大约1948个字)堆一、是什么?在逻辑意义上,堆是一棵二叉树,类似这样: 1234567 大值堆 小值堆 30 14 / \ / \ 28 16 22 16 \ / / / 22 12 24 26 堆的特性: 是一棵二叉树 节点是局部有序的(不像 BST 那样整体有序) 局部有序的意思是: 算法, 数据结构, 堆 阅读更多
红黑树 2023-02-09 2023-04-16 数据结构与算法 / 数据结构 43 分钟读完 (大约6433个字)红黑树一、什么是红黑树?红黑树是一棵只有红色节点和黑色节点的平衡二叉搜索树。 其结构类似这样: 1234567 b4 / \ r2 r6 / \ / \b1 b3 b5 b7 \ r9 其中,b 表示黑色,r 表示红色。 1.1 红黑树的特性在《算法导论》里,红黑树是这样定义的: 算法, 数据结构, 红黑树 阅读更多
B+树 2023-01-16 2023-04-03 数据结构与算法 / 数据结构 1 小时读完 (大约6818个字)B+树一、什么是 B+ 树?B+ 树是 B-树的变种。 其结构类似这样: 123456789101112 ____ ___ ___ | 24 | | | | -------------------------------------------------------- | | ____ ____ ___ ____ ___ ___ | 15 | 20 | | | 33 | | | | | -------------------------------------------- ----------------------- | | | | | ____ ____ ___ ____ ____ ___ ____ ____ ___ ____ ____ ___ ____ ____ ___| 10 | 12 | | <=> | 15 | 18 | | <=> | 20 | 21 | | <=> | 30 | 31 | | <=> | 34 | 38 | | B+ 树和 B-树的主要区别在于: 算法, 数据结构, B+树 阅读更多
B-树 2023-01-12 2023-04-03 数据结构与算法 / 数据结构 35 分钟读完 (大约5291个字)B-树一、B-树是什么?B-树是一棵所有叶子节点高度都相同的平衡多叉树。 其结构类似这样: 123456789101112 ____ ___ ___ | 24 | | | | --------------------------------------------- | | ____ ____ ___ ____ ___ ___ | 15 | 20 | | | 33 | | | | | ----------------------------------- ------------------- | | | | | ____ ____ ___ ____ ___ ___ ____ ____ ___ ____ ____ ___ ____ ___ ___| 10 | 12 | | | 18 | | | | 21 | 23 | | | 30 | 31 | | | 38 | | | B-树的一些性质: 算法, 数据结构, B-树 阅读更多