计算机基础 比特(bit)和字节(bytet)(1)一个 0 或者一个 1 存储为一个比特(bit),是计算机中最小的存储单位。 (2)计算机中是最基本的存储单元是字节(byte)。每个字节由 8 个比特构成。 二进制的原码、反码、补码(1)二进制的最高位是符号位:0表示正数,1表示负数(老韩口诀:0 -> 0 1 -> - ,旋转90°) (2)正数的原码,反码,补码都一样(三码合一) (3)负 2022-07-29 计算机基础 #二进制 #字节
哈夫曼编码 哈夫曼编码 哈夫曼编码 基本介绍 实现思路 特点总结 最佳实践 数据压缩及解压 文件的压缩与解压 哈夫曼编码压缩文件注意事项 基本介绍(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
哈希表 哈希表 哈希表 应用背景 Google上机题 减少数据库查询次数 基本介绍 实现思路 代码实现 应用背景Google上机题看一个实际需求,Google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的所有信息.要求:不使用数据库,尽量节省内存,速度越快越好 这时候就暗示要使用哈希表(散列) 减 2022-07-20 DataStructure #HashTable #Java #哈希表
查找 查找 查找 常用查找 线性查找 二分查找 思路分析 代码实现 递归实现 非递归实现 插值查找 思路分析 代码实现 斐波那契查找 思路分析 代码实现 总结 常用查找 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查按 线性查找// 简单的线性查找,找到一个val就返回下标 public static int seqSearch(int[] arr, int 2022-07-17 DataStructure #Java #Search #查找
基数排序 基数排序 基数排序 基本介绍 基本思想 代码实现 特点总结 基本介绍 基数排序(Radix Sort)属于“分配式排序” (distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。 基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法。 基数排序(Ra 2022-07-16 DataStructure #Java #Sort #排序
归并排序 归并排序基本介绍归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之)。 视频讲解 代码实现// 归并排序 public static void mergeSort(int[] arr, 2022-07-15 DataStructure #Java #Sort #排序
快速排序 快速排序 快速排序 基本介绍 代码实现 特点及性能 基本介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 视频讲解 选定Pivot中心轴 将大于Pivot的数字放在Piv 2022-07-14 DataStructure #Java #Sort #排序