随笔分类 -  Data Structures

摘要:红黑树(Red Black Tree)是一种自平衡的二叉搜索树(Self-balancing Binary Search Tree)。以前也叫平衡二叉B树(Symmetric Binary B-Tree) 1、前言 树的结构 1.1 平衡二叉搜索树 平衡二叉搜索树(Balanced Binary S 阅读全文
posted @ 2020-07-02 14:21 hyunbar 阅读(202) 评论(0) 推荐(0) 编辑
摘要:一、图的常用概念 1、顶点(vertex) 2、边(edge) 3、路径 4、无向图:顶点之间的连接没有方向 5、有向图:有方向 6、带全图 二、图的表示方式 图的表示方式有两种:二维数组(邻接矩阵),链表(邻接表) 1、邻接矩阵 邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩 阅读全文
posted @ 2019-09-23 19:29 hyunbar 阅读(319) 评论(0) 推荐(0) 编辑
摘要:一、基本介绍 1)平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树, 可以保证查询效率较高。 2)具有以下特点:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 3)平衡二叉树的常用实现方 阅读全文
posted @ 2019-09-11 21:14 hyunbar 阅读(304) 评论(0) 推荐(0) 编辑
摘要:一、基本介绍 BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值 小,右子节点的值比当前节点的值大。 说明:如果有相同的值,可以将该节点放在左子节点或右子节点 二、二叉排序树的删除 1)删除叶子节点 (比如:2, 5, 阅读全文
posted @ 2019-09-11 20:54 hyunbar 阅读(180) 评论(0) 推荐(0) 编辑
摘要:一、概述 1、赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法 2、赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。 3、赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间 4、赫夫曼码是可变字长编码(VLC)的一 阅读全文
posted @ 2019-09-10 20:59 hyunbar 阅读(688) 评论(0) 推荐(0) 编辑
摘要:一、基本介绍 1、给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这 样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。 2、赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 二、重要概念 1、路径和路径长度 阅读全文
posted @ 2019-09-10 20:43 hyunbar 阅读(296) 评论(0) 推荐(0) 编辑
摘要:一、为什么需要树这种数据结构 1、数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 2、链式存储方式的分析 优点:在一定程度上对数组存储方式有优化(比如:插入一个 阅读全文
posted @ 2019-09-10 12:28 hyunbar 阅读(206) 评论(0) 推荐(0) 编辑
摘要:一、冒泡排序 1、基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有 阅读全文
posted @ 2019-08-05 18:52 hyunbar 阅读(186) 评论(0) 推荐(0) 编辑
摘要:一、概述 1、排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 2、排序的分类: 1) 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 2) 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 3)常见算法分类 阅读全文
posted @ 2019-08-04 22:57 hyunbar 阅读(240) 评论(0) 推荐(0) 编辑
摘要:一、概念 简单的说: 递归就是方法自己调用自己 递归有助于解决复杂的问题,可以让代码变得简洁 二、能解决什么样的问题 三、递归需要遵守的重要规则 四、迷宫问题 说明: 1)小球得到的路径,和程序员设置的查找策略有关,即:上 -> 下 -> 左 -> 右 2) 在得到小球路径时,可以先使用(上下左右) 阅读全文
posted @ 2019-08-02 20:35 hyunbar 阅读(353) 评论(0) 推荐(0) 编辑
摘要:一、数组反转 1、方法一:创建新数组 1 int[] arr = {6,29,0,4,3}; 2 int[] arr2 = new int[arr.length]; 3 for (int i = 0; i < arr.length; i++) { 4 arr2[i]=arr[arr.length-1 阅读全文
posted @ 2019-07-31 19:25 hyunbar 阅读(352) 评论(0) 推荐(0) 编辑
摘要:一、概述 注意:模拟战还可以用链表 二、代码 阅读全文
posted @ 2019-07-29 19:56 hyunbar 阅读(460) 评论(0) 推荐(0) 编辑
摘要:一、概述 二、英雄类 三、主方法 四、操作 双链表操作跟单链表相差无几,所以只写了插入和打印操作 1、最前插入节点 2、最后插入节点 3、打印双向链表(根据head向后遍历打印) 4、打印双向链表(根据last向前遍历打印) 5、删除节点 5、打印的辅助方法 五、结果展示 阅读全文
posted @ 2019-07-29 15:51 hyunbar 阅读(188) 评论(0) 推荐(0) 编辑
摘要:一、概述 二、主方法 二、节点类 三、基本功能实现 1、打印单个节点 2、插入新节点 3、打印链表 4、删除指定id节点 5、修改 6、查找节点 四、较难功能 1、单链表反转:方法1(不能只交换数据,节点随数据一起交换) 2、单链表反转:方法2(不能只交换数据,节点随数据一起交换),利用stack( 阅读全文
posted @ 2019-07-27 12:33 hyunbar 阅读(272) 评论(0) 推荐(0) 编辑
摘要:一、概述 1、概念 2、处理方法 3、示例 原数组如下: 转换为稀疏数组如下: 二、代码 1、主方法 2、实现数组转稀疏数组 3、将稀疏数组写入文件 4、从文件中读出稀疏数组 5、稀疏数组转数组 三、运行结果 阅读全文
posted @ 2019-07-26 19:32 hyunbar 阅读(648) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示