
数据结构
文章平均质量分 52
Yangshiwei....
好好努力
展开
-
java 认识TreeMap有序集合
TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序。 TreeMap底层实现了树形结构,实现了红黑树的一个结构。TreeMap继承于AbstractMap,实现了Map, Cloneable, NavigableMap, Serializable接口。 获得最小与最大: 由于他的底层原理是一个红黑树,所以最小与最大实际上,就是取最左与最右。 successor方...原创 2022-01-25 23:13:51 · 1496 阅读 · 0 评论 -
哈夫曼树的认识
给定N个权值作为N个叶子节点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 在计算机中,哈夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的...原创 2022-01-18 22:28:32 · 748 阅读 · 0 评论 -
八大排序 快速排序
基本思想 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 算法描述 快速排序使用分治法来把一个串(名单)分为两个子串(子列表)具体算法描述如下: 1、会把数组当中的一个数当成基准数 2、一般会把数组中最左边的数当成基准数,然后丛两边进行检索。丛右边检索比基准数小的,然后左边检索比基准数大的。如果检索到了,就停下,然后交换这两个元素,然后继续检索。 3、递归地(...原创 2022-01-17 23:48:46 · 491 阅读 · 0 评论 -
插入排序总结
基本原理 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 代码: // int[] arr = new int[] {17,3,25,14,20,9}; public static void main(String[] args) { int[] arr =...原创 2021-10-16 02:08:50 · 94 阅读 · 0 评论 -
八大算法之归并排序(java代码)
基本思想 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序。 将一个数组拆分为两个,从中间点拆开,通过递归操作来实现一层一层拆分。 从左右数组中选择小的元素放入到临时空间,并移动下标到下一位置。 重复步骤2直到某一下标达到尾部。 将另一序列剩下的所有元素依次放入临时空间。 将临时空间的数据依次放入原数据数组。 图解 代码与结果: public static void main(String[] args) { ...原创 2022-01-17 23:01:02 · 124 阅读 · 0 评论 -
数据结构 树,平衡二叉树,红黑树,b,b+树主要特点
二叉树 每个节点最多拥有两个子节点 每个节点最多有一个父节点 只有一个根节点 遍历 前序遍历 中序遍历 后序遍历 层次遍历 搜索二叉树(有序二叉树) 左边比根小 右边比根大 查找时间 最优 Ologn ~ On 不太稳定 平衡二叉树 旋转 如何旋转 如何平衡 最小不平衡子树 LL型 LR型 任何一个节点 左右子树高度差不超过1 RR型 RL型 红黑树 近似的平衡二叉查找树 要么是红的要么是黑的 叶子节点nil节点是黑的 根节点是黑的 心是一个黑心呀 节原创 2022-01-17 22:16:44 · 307 阅读 · 0 评论