分治算法 分治算法基本介绍分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题….直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换… 分治算法可以求解的一些经典问题: 二分搜索 大整数乘法 棋盘覆盖 合并排序 2022-08-07 algorithm #Java #分治算法
图 图 图 图的基本介绍 为什么要有图 图的常用概念 图的表示方式 邻接矩阵 邻接表 构建图 构建图的实现思路 构建图的代码实现 图的遍历 深度优先遍历基本思想 深度优先遍历实现思路 深度优先遍历代码实现 广度优先遍历基本思想 广度优先遍历实现思路 广度优先遍历代码实现 图的基本介绍为什么要有图(1)线性表局限于一个直接前驱和一个直接后继的关系 (2)树也只能有一个直接前驱也就是 2022-08-04 DataStructure #Java #Graph #图 #DFS #BFS
多叉树 多路查找树 多路查找树 二叉树与B树 二叉树的问题分析 多叉树的基本介绍 B树的基本介绍 2-3树基本介绍 2-3树的构建思路 B树、B+树和B*树 B树的介绍 B树的相关概念 B+树的相关概念 B*树的相关概念 二叉树与B树二叉树的问题分析二叉树的操作效率较高,但是也存在问题。 二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿),就存在如 2022-08-03 DataStructure #Java #树 #Tree
平衡二叉树 平衡二叉树(AVL) 平衡二叉树(AVL) 背景引入 基本介绍 实现思路 代码实现 背景引入二叉排序树可能的问题: 给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST),并分析问题所在。 BST存在的问题分析: (1)左子树全部为空,从形式上看,更像一个单链表。(2)插入速度没有影响(3)查询速度明显降低(因为需要依次比较),不能发挥BST的优势,因为每次还需要比较左子树 2022-08-02 DataStructure #Java #树 #Tree
二叉排序树 二叉排序树(BST) 二叉排序树(BST) 背景引入 需求分析 解决方案分析 使用数组 使用链式存储(链表) 使用二叉排序树 二叉排序树基本介绍 二叉排序树的创建与排序 二叉排序树的删除 思路分析 代码实现 拓展练习 背景引入需求分析给你一个数列 (7,3,10,12,5,1,9),要求能够高效的完成对数据的查询和添加 解决方案分析使用数组 数组未排序 优点:直接在数组尾添加,速 2022-08-01 DataStructure #Java #树 #Tree #Sort #Srarch
计算机基础 比特(bit)和字节(bytet)(1)一个 0 或者一个 1 存储为一个比特(bit),是计算机中最小的存储单位。 (2)计算机中是最基本的存储单元是字节(byte)。每个字节由 8 个比特构成。 二进制的原码、反码、补码(1)二进制的最高位是符号位:0表示正数,1表示负数(老韩口诀:0 -> 0 1 -> - ,旋转90°) (2)正数的原码,反码,补码都一样(三码合一) (3)负 2022-07-29 CSBase #二进制 #字节
哈夫曼编码 哈夫曼编码 哈夫曼编码 基本介绍 实现思路 特点总结 最佳实践 数据压缩及解压 文件的压缩与解压 哈夫曼编码压缩文件注意事项 基本介绍(1)哈夫曼编码也翻译为哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,属于一种程序算法。 (2)哈夫曼编码是哈夫曼树在电讯通信中的经典的应用之一。 (3)哈夫曼编码广泛地用于数据文件压缩,其压缩率通常在20%~90%之间。 ( 2022-07-28 DataStructure #Java #树 #Tree #Huffman
哈夫曼树 哈夫曼树(HuffmanTree) 哈夫曼树(HuffmanTree) 基本介绍 哈夫曼树几个重要概念和举例说明 构建哈夫曼树的思路 构建哈夫曼树的代码 基本介绍(1)给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree),还有的书翻译为霍夫曼树。 (2)哈夫曼树是带权路径长度最短的树,权 2022-07-27 DataStructure #Java #树 #Tree #Huffman
堆排序 堆排序堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。注意:没有要求结点的左孩子的值和右孩子的值的大小关系。 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 一般升序采用大顶堆,降序采用小顶堆 2022-07-26 DataStructure #Java #Sort #排序
树和二叉树 树和二叉树 树和二叉树 为什么需要树这种数据结构 树 树的概念 树的术语 二叉树 二叉树的形态 特殊二叉树 二叉树的遍历 二叉树遍历的实现思路 前序遍历 中序遍历 后序遍历 二叉树遍历的代码实现 二叉树的查找 前序中序后序查找思路 前序查找 中序查找 后序查找 前序中序后序查找代码实现 二叉树删除结点 二叉树删除结点思路 二叉树删除结点代码实现 顺序存储二叉树 顺序存储 2022-07-21 DataStructure #Java #树 #Tree