01
23
标准红黑树 标准红黑树
标准红黑树 概述: 标准红黑树是2-3-4树的一种表示, 特性: 1.节点是红色或黑色。 2.根是黑色。 3.所有叶子都是黑色(叶子是NIL节点)。 4.每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的
2019-01-23
05
散列表 散列表
散列表 优点: 插入和查找操作的时间复杂度都是O(1) 缺点: 性能的保证来自散列函数的质量,是无序符号表,不支持有序性相关操作,是以空间换取时间的数据结构. 1. 基于拉链法的散列表 概述: 通过链表方式处理碰撞冲突,将碰撞冲突的键放
2019-01-05
12
28
左倾红黑树 左倾红黑树
左倾红黑树 概述: ​ 通过二叉查找树可以发现,在最坏情况下(变成长链),性能很差, ​ 因此理想的情况下就是构建一个完美平衡的树,然而维护完美平衡需要额外的开销 ​ 红黑树在性能和维护平衡之间进行协调 左倾红黑树特点:
2018-12-28
20
二叉查找树 二叉查找树
二叉查找树 二叉查找树的平均查找速度与树高成正比 优点: 作为一种有序符号表实现,支持高效的查找丶插入丶删除操作, 平均情况下1.39lgN 缺点: 在最坏况下(有序数据构建),二叉查找树会退化成链表,此时的变为o(n)级别,(为解决此问
2018-12-20
11
25
堆排序 堆排序
二叉堆 堆中任意节点的值总是不大于(不小于)其子节点的值 二叉堆是完全二叉树或者是近似完全二叉树 对于二叉堆中任意一个位置i,其左子节点为2i,右子节点为2i+1 1.优先队列 优先队列是一种用来维护一组元素构成的集合的数据结构 ,可以
2018-11-25
03
快速排序 快速排序
快速排序 1.快速排序 /** * 快速排序 * 概述: 将数组按照一个分切元素v(数组中一个值)进行分切, * 分切后为: 不大于v的序列(左序列),v,不小于v的序列(右序列) * 继续按
2018-11-03
10
19
归并排序 归并排序
归并排序 概述: 主要思想是将2个已经有序的数组归并为一个有序数组 1.自顶向下归并排序 /** * 自顶向下归并排序(递归) */ public void merge(int[] arr,int lo,
2018-10-19
14
希尔排序 希尔排序
希尔排序 希尔排序又称”缩小增量排序”,是插入排序的优化,插入排序在少量数据或部分有序的情况下,非常高效,因此希尔排序通过适当构造满足前述的条件,让整个排序过程处理的比插入排序更优 /** * 希尔排序 * 步
2018-10-14
09
插入排序 插入排序
插入排序 概述 插入排序所需的时间与数组的初始顺序有关,对于已经有序或部分有序的数组进行排序时有优势 实现 /** * 插入排序 * 思路: 将一个元素插入到已经有序的序列中; * 步骤: 1.
2018-10-09
08
选择排序 选择排序
选择排序 V1.0 /** * 选择排序(比较大小直接交换) */ public void select(int[] arr){ for(int i=0,len=arr.length;i
2018-10-08
01
union-find算法 union-find算法
Union-Find算法 基本介绍 可以想象一张地图上有很多点,有些点之间是有道路相互联通的,而有些点则没有。如果我们现在要从点A走向点B,那么一个关键的问题就是判断我们能否从A走到B呢?换句话说,A和B是否是连通的. 定义un
2018-10-01
09
29
汉诺塔问题 汉诺塔问题
汉诺塔问题 问题描述 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面
2018-09-29
7 / 9