
|--Tree
文章平均质量分 95
Holmofy
奋斗中的小菜鸟
展开
-
K-D树、K-D-B树、B-K-D树
K-D树在维基百科上定义是将K维空间中的点进行分割的数据结构,D是dimensional(维度)的缩写,K-D树是BSP(Binary Space Partitioning)的一种。 维基百科的解释很正式(看的迷迷糊糊)。简单的说,K-D树就是二分查找树在K维空间的泛化(更迷糊了????)。 1、K维空间的二分查找树 之前的一篇文章中有讲过二分查找树(BST)这样基础的数据结构,它是基于二分查找的思想实...原创 2020-03-07 22:36:13 · 4163 阅读 · 0 评论 -
B树与B+树
从二叉搜索树说起 其实上一篇文章已经对BST进行过讨论,并对AVL,红黑树这样的自平衡二叉查找树分别解决了什么问题进行了讨论。 上面这些数据结构理论上能达到O(log2N)O(log2N)O(log_2N)的平均时间复杂度。 这个时间复杂度是基于对内存的操作而计算出来的。倘若我们的数据量十分庞大,内存无法容纳,我们不得不存储在硬盘中。这个时候二叉搜索树还能达到预期的速度吗? 在回答这个...原创 2018-04-06 02:47:24 · 1516 阅读 · 0 评论 -
二叉搜索树BST,AVL,红黑树,伸展树
从线性查找和二分查找说起 线性查找是最基础(野蛮)的查找算法,最坏的情况从头遍历到位,最好的情况比较一次,平均时间复杂度为N2N2\frac{N}{2}。 二分查找能达到O(log2N)O(log2N)O(log_2N)的时间复杂度,但是前提是列表中的数据必须是有序的。 不管是基于数组实现的列表(ArrayList)还是基于链表实现的列表(LinkedList),想要在插入新元素的同时保...原创 2018-03-26 00:11:53 · 2251 阅读 · 6 评论