
Data Structure
FlyingZCC
Apache ShardingSphere Committer
GitHub: https://github.com/FlyingZC
Blog: https://flyingzc.github.io
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图
图 public interface IGraph<T> { /** * 返回图的顶点数 */ int vertexCount(); /** * 返回顶点vi元素 */ T getVertex(int i); /** * 设置顶点vi元素为x */ void setVertex(int i, T x); /** * 尾插入元素为x的顶点,返回x顶点序号 *原创 2021-01-25 23:41:43 · 134 阅读 · 0 评论 -
排序2
桶排序 时间复杂度是 O(n) 将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。 桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 如果要排序的数据有 n 个,我们把它们均匀地划分到 m 个桶内,每个桶里就有 k=n/m 个元素。每个桶内部使用快速排序,时间复杂度为 O(k * logk)。m 个桶排序的时间复杂度就是 O(m * k * logk),因为 k=n/m,所以整个桶排序的时间复杂度就是 O(n*log(n/m))。当桶的个数 m 接近数据个数 n 时原创 2021-01-23 23:45:25 · 100 阅读 · 0 评论 -
平衡二叉树
平衡二叉树 平衡二叉树 是一棵空二叉树; 或者是具有下列性质的二叉排序树: (1)它的 左子树 和 右子树 都是 平衡二叉树; (2)左子树 与 右子树 的 高度之差 的 绝对值 不超过1。 结点的平衡因子(Balance Factor)定义为: 其 左子树 与 右子树 的高度之差: 结点的平衡因子 = 左子树的高度 - 右子树的高度 平衡二叉树中任何一个结点的平衡因子只能是-1、0或1 在平衡二叉树中,插入或删除一个结点可能破坏二叉树的平衡性,因此在插入或删除时都要调整二叉树,使之始终保持平衡状态。 插入原创 2021-01-19 22:52:32 · 383 阅读 · 0 评论 -
Huffman树
Huffman树 构造Huffman树并获得Huffman编码 Huffman 算法描述如下: 给定一个权值集合{w0,w1,…,wn-1}(n>0),将 wi(0≤i<n)作为二叉树第i个叶子结点的权值,构造一棵Huffman树,使其带权外路径长度WPL最小。 1.初始,构造具有n棵二叉树的森林F={T0,T1,…,Tn-1},其中每棵二叉树Ti只有一个权值为wi的结点,该结点既是根结点也是叶子结点。 2.采取不断合并二叉树的策略。在F中选择当前根结点权值最小的两棵二叉树合并,左孩子结点权值较小,合并后根原创 2021-01-15 23:01:30 · 510 阅读 · 0 评论 -
二叉树实现
二叉树 二叉树定义 二叉树(Binary Tree)是 n(n ≥ 0)个 结点 组成的 有限集合,n = 0 时称为空二叉树; n > 0 的二叉树由 一个根结点 和 两棵互不相交的、分别称为 左子树 和 右子树 的 子二叉树 构成。 满二叉树 和 完全二叉树 满二叉树: 一棵高度为 h 的满二叉树(Full Binary Tree)是具有 2^h-1(h≥0)个结点的二叉树。 一棵具有 n 个结点高度为 h 的二叉树,如果它的每个结点都与高度为 h 的满二叉树中序号为 0~n-1 的结点一一对应,原创 2021-01-12 00:23:59 · 211 阅读 · 0 评论 -
2-3查找树
2-3 查找树 定义: 一棵 2-3 查找树 或为一棵空树,或由以下结点组成: 2-结点: 含有一个键(及其对应的值)和两条链接,左链接指向的 2-3 树中的键都小于该结点,右链接指向的 2-3 树中的键都大于该结点。 3-结点: 含有两个键(及其对应的值)和三条链接,左链接指向的 2-3 树中的键都小于该结点,中链接指向的 2-3 树中的键都位于该结点的两个键之间,右链接指向的 2-3 树中的键都大于该结点。 将指向一棵空树的链接称为空链接 查找 要判断一个键是否在树中,我们先将它和根结点中的键比较。 如原创 2020-12-30 23:08:39 · 223 阅读 · 0 评论 -
二叉查找树
二叉查找树 定义:一棵 二叉查找树(BST) 是一棵二叉树, 其中每个结点都含有一个 Comparable 的键(以及相关联的值)且 每个结点的键都大于其左子树中的任意结点的键 而小于右子树的任意结点的键。 在二叉树 中,每个结点只能有一个父结点(只有一个例外,也就是根结点 ,它没有父结点),而且每个结点都只有左右 两个链接,分别指向自己的左子结点 和右子结点. 尽管链接指向的是结点,但我们可以将每个链接看做指向了另一棵二叉树,而这棵树的根结点就是被指向的结点。因此我们可以将二叉树定义为一个空链接,或者是一原创 2020-12-29 23:05:20 · 242 阅读 · 1 评论 -
优先队列
优先队列 优先队列: 满足收集一些元素,处理当前键值最大的元素.然后再收集更多的元素,再处理当前键值最大的元素需求. 支持两种操作:删除最大元素 和 插入元素 API 最重要的操作就是 删除最大元素delMax() 和插入元素insert(). public class MaxPQ <Key extends Comparable<Key>> { // 创建一个优先队列 public MaxPQ() // 创建一个初始容量为 max 的优先队列 pu原创 2020-12-28 22:58:34 · 215 阅读 · 0 评论 -
排序
排序 最近在看算法4,复习下数据结构算法,以下内容来源于排序部分. 选择排序 不断地选择剩余元素之中的最小者 1.找到数组中最小的那个元素; 2.将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换); 3.在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 /** * 将a[]按升序排列 */ public static void sort(Comparable[] a) { int n = a.length; for (i原创 2020-12-27 23:25:51 · 159 阅读 · 0 评论 -
滑动窗口
滑动窗口(Sliding Window) 滑动窗口协议(Sliding Window Protocol),属于 TCP 协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。 算法中的滑动窗口也是类似,通常用来解决一些连续问题。 比如,求解“连续子串 xxxx”,“连续子数组 xxxx”. 从类型上说主要有: 固定窗口大小. 窗口大小不固定,求解最大的满足条件的窗口 (3. 无重复字符的最长子串) 窗口大小不固定,求解最小的满足条件的窗口(209 题) 固定窗口大小 对于固定窗口,只需要固定初始化原创 2020-12-13 23:04:43 · 172 阅读 · 0 评论 -
布隆过滤器
布隆过滤器 what 布隆过滤器(Bloom Filter).是一个很长的 二进制向量 和 一系列随机映射 函数. 之所以叫 filter,是在缓存之前,把不存在的 key 给拦截掉. 本质是 一个位数组: 位数组 就是 数组 的 每个元素 都只占用 1 bit,并且每个元素只能是 0 或 1. 用于判断: 某个元素 一定不存在 或者 可能存在 于 一个集合中. 布隆过滤器除了一个位数组,还有 K...原创 2019-12-18 16:02:12 · 245 阅读 · 0 评论