基数树 基数树,即基数树,也称为压缩前缀树,是一种提供存储键和查找的数据结构。与Trie不同的是,它对Trie树进行空间优化,只有一个子节点的中心节点会被压缩。而且,Radix树的插入、查询、删除操作的时间复杂度都是O(k)。 基数树特征...
Floyd算法Floyd是经典的多源最短路径算法,利用动态规划的思想来寻找多源点之间的最短路径。在具体的体重表中。该算法的时间复杂度为O(n3)。之所以叫Floyd,是因为该算法的创始人之一是1978年图灵奖获得者、斯坦福大学计算机教授学院...
二叉树的遍历是指从根节点开始,按照一定的顺序依次访问二叉树中的所有节点,使得每个节点被访问一次且仅访问一次。 二叉树遍历中比较常用的遍历方式有三种:前序遍历、中序遍历、后序遍历。接下来我会尝试用三组动画向读者详细介绍这三种遍历方式的逻辑思想...
解决常见的链表搜索问题。首先,分析问题的瓶颈。对于搜索来说,自然是从头到尾按顺序搜索。那么如何才能更快的找到目标元素呢?对链表中的元素进行排序可以加快搜索过程,但仍然需要顺序搜索。因此,对于链表来说,最好允许跳过某些节点以避免顺序处理。基于...
数组是软件开发过程中非常重要的数据结构,但数组至少有两个限制: 元素大小必须在编译时确定 数组在内存中是连续的。插入或删除需要移动字段中的其他数据 字段适合处理对插入或删除不敏感的一定长度的数据。如果数据变化频繁,则需要选择其他数据结构。...
什么是 Virtual Dom 我们知道我们正常的页面是由很多个 Dom 组成的,那么 Virtual Dom 到底是什么呢?简单来说,就是一个真正的dom节点。使用JavaScript来模拟一下这个,对比一下Js层的Dom变化。 以下是大...
希尔排序 希尔排序,也称为降序增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是一种不稳定的排序算法。 希尔排序基于插入排序的以下两个性质提出了一种改进方法: 插入排序在处理已经差不多排序的数据时非常高效,这意味着它可以达到线性排...
1 为什么会有平衡二叉树 二叉搜索树可以在一定程度上提高搜索效率,但是当原始序列已排序时,例如序列A = {1, 2, 3, 4, 5, 6},构造二叉搜索树如图1.1所示。基于这个序列构建的二叉搜索树是右偏树,二叉树退化为链表,搜索效率降...
众所周知,HashMap是一个用来存储键值对key-Value的集合。每个键值对也称为 Entry。这些键值对(Entry)分散存储在一个数组中,这个数组就是HashMap的主干。 HashMap数组的每个元素的初始值为Null。 对于Ha...
两个月前——为了满足用户标签的统计需求,小灰使用MySQL设计了如下表结构。人物的每个维度都对应Mysql One表中的一列:如果我们想统计所有90年代出生的程序员该怎么办? 使用 SQL 语句进行交集:从表中选择用户数(分隔名),年龄 =...