参考图解更容易理解:https://www.cnblogs.com/Knight-of-Dulcinea/p/9945810.html 02-看图理解数据结构与算法系列(单向链表) Read More
posted @ 2018-11-20 14:38 浅尝辄止易初心不改难 Views(113) Comments(0) Diggs(0) Edit
Radix树 Radix树,即基数树,也称压缩前缀树,是一种提供key-value存储查找的数据结构。与Trie不同的是,它对Trie树进行了空间优化,只有一个子节点的中间节点将被压缩。同样的,Radix树的插入、查询、删除操作的时间复杂度都为O(k)。 Radix树特点 一般由根节点、中间节点和叶 Read More
posted @ 2018-11-12 14:12 浅尝辄止易初心不改难 Views(832) Comments(0) Diggs(0) Edit
红黑树 红黑(Red-black)树是一种自平衡二叉查找树,1972年由Rudolf Bayer发明,它与AVL树类似,都在插入和删除操作时能通过旋转操作保持二叉查找树的平衡,以便能获得高效的查找性能。 它可以在 时间内做查找,插入和删除等操作。红黑树是2-3-4树的一种等同,但有些红黑树设定只能左 Read More
posted @ 2018-11-12 14:11 浅尝辄止易初心不改难 Views(284) Comments(0) Diggs(0) Edit
关于LSM树 LSM树,即日志结构合并树(Log-Structured Merge-Tree)。其实它并不属于一个具体的数据结构,它更多是一种数据结构的设计思想。大多NoSQL数据库核心思想都是基于LSM来做的,只是具体的实现不同。所以本来不打算列入该系列,但是有朋友留言了好几次让我讲LSM树,那么 Read More
posted @ 2018-11-12 14:10 浅尝辄止易初心不改难 Views(520) Comments(0) Diggs(0) Edit
快速排序 快速排序由C.A.R.Hoare在1962年提出,是冒泡排序的一种改进。其基本思想为:通过一趟排序将待排序数据分割成独立的两部分,其中一部分的所有值都比另一部分的所有值都小,然后再对分割的两部分分别进行快速排序,整个过程可以递归进行,最终所有数据变为有序序列。 排序要点 设待排序数组为a[ Read More
posted @ 2018-11-12 14:08 浅尝辄止易初心不改难 Views(229) Comments(0) Diggs(0) Edit
合并排序 合并排序也叫归并排序,它的主要思想是分治法,把待排序序列分为若干有序子序列,然后将两个或两个以上的有序子序列进行合并,得到一个新的完整的有序序列。所以首先得先对子序列进行排序,得到有序子序列,然后再使序列段之间有序。 排序要点 既然是分治法,那么就涉及到分和治。分,即递归地将序列分成小序列 Read More
posted @ 2018-11-12 14:06 浅尝辄止易初心不改难 Views(183) Comments(0) Diggs(0) Edit
希尔排序 希尔排序是希尔(Donald Shell)提出的一种排序方法,也属于插入排序,但是简单插入排序的高效版本,也称为缩小增量排序。基本思想是将待排序元素进行增量分组,然后在分组组内进行插入排序,随着增量的减少,每个分组组内的元素越来越多,直至增量减至1时,所有元素都分到同一个组内,执行插入排序 Read More
posted @ 2018-11-12 14:05 浅尝辄止易初心不改难 Views(172) Comments(0) Diggs(0) Edit
Trie树 Trie树,是一种搜索树,也称字典树或单词查找树,此外也称前缀树,因为某节点的后代存在共同的前缀。它的key都为字符串,能做到高效查询和插入,时间复杂度为O(k),k为字符串长度,缺点是如果大量字符串没有共同前缀时很耗内存。它的核心思想就是减少没必要的字符比较,使查询高效率,即用空间换时 Read More
posted @ 2018-11-12 14:03 浅尝辄止易初心不改难 Views(149) Comments(0) Diggs(0) Edit
冒泡排序 冒泡排序是一种很简单的排序算法,主要思想就是不断走访待排序序列,每次只比较两个相邻元素,如果这俩元素顺序不符合要求则对换它们,不断重复知道没有相邻元素需要对换。在不断走访比较过程中,越大的元素经过交换会慢慢走到数列顶端,所以看起来它就像气泡一样不断往上冒,于是就叫冒泡。 排序要点 比较相邻 Read More
posted @ 2018-11-12 14:01 浅尝辄止易初心不改难 Views(122) Comments(0) Diggs(0) Edit
删除操作 删除操作比较复杂,主要是因为删除的项可能在叶子节点上也可能在非叶子节点上,而且删除后可能导致不符合B树的规定,这里暂且称之为导致B树不平衡,于是要进行一些合并、左旋、右旋等操作,使之符合B树的规定(即让B树平衡)。另外,如果是删除非叶子节点项需要先找到中序前驱来替换。 情况一 要删除的项在 Read More
posted @ 2018-11-12 14:00 浅尝辄止易初心不改难 Views(1270) Comments(0) Diggs(0) Edit