算法、数据结构
嗯嗯**
If you want to go fast,go alone.If you want to go far,go together
展开
-
RSA加密、签名、数字证书算法、DSA - 非对称加密
文章目录1. RSA信息加密1. 计算钥匙阶段 - N的二进制位数即是密钥的长度2. 加密、解密阶段2. RSA签名3. 数字证书 - 权威机构证明传过来的公钥是对方的非对称加密RSA(发明家三人的首字母)DSA(数字签名算法):1. RSA信息加密RSA加密步骤 - 例子1. 计算钥匙阶段 - N的二进制位数即是密钥的长度一般用的密钥长度是1024位密钥,重要的信息需要2048位密...原创 2020-04-25 16:01:26 · 515 阅读 · 0 评论 -
MD5、SHA、HMAC加密算法 - 不可逆加密
文章目录1. MD5(消息摘要算法5) - 固定128位二进制2. SHA-1加密(安全哈希算法) - 固定160位二进制3. HMAC加密(基于哈希的消息验证代码) - 固定二进制位数 - 使用服务端产生的Key进行两次加盐(Key)处理1. MD5(消息摘要算法5) - 固定128位二进制作用:根据明文产品一个不可解的MD5信息摘要特点不可逆运算:加密后不可以反计算得到明文等长性:加...原创 2020-04-25 15:59:50 · 1394 阅读 · 0 评论 -
Base64、URLEncoding - 编码算法
文章目录1. Base64编码2. URLEncoding编码1. Base64编码Base64编码对应表 ASCII编码对应表原理:Base64的二进制位数必须是3的倍数 - 不够则补将每个ASCILL每个字符转为8位的二进制数划分每6位二进制数转为1个Base编码转换为一个小组,4个Base编码为一个大组注意:必须划分为一个大组,小组存在划分二进制数但不够6个...原创 2020-04-25 15:58:26 · 1267 阅读 · 0 评论 -
数据结构与算法16 - 其他算法
文章目录1. 分治算法1.1 汉诺塔2. 动态规划2.1 背包问题 - 固定容器的背包,如何能装入总价值最大的东西2.1.1 01背包 - 不可装入重复的东西3. KMP、暴力匹配算法4. 贪心算法 - 解决集合覆盖问题5. 图5.1 最小生成树(所有结点都有路可走) - Minimum Spanning Tree5.1.1 普里姆算法5.1.2 克鲁斯卡尔算法1. 分治算法步骤1. 问题拆分...原创 2020-04-25 14:33:54 · 172 阅读 · 0 评论 -
数据结构与算法15 - 图
文章目录1. 图概念 - 多对多关系1.1 图的表式1.1.1 矩阵 - 数组1.1.2 邻接表 - 数组+链表2. 代码2.1 矩阵2.1.1 基本类创建2.1.2 遍历图的结点2.1.2.1 深度优先遍历(DFS)2.1.2.2 广度优先遍历(BFS)- 分层搜索2.1.2.3 案例讲解1. 图概念 - 多对多关系提出背景线性表只能局限于一个直接前驱、直接后继的关系 (一对一关系...原创 2020-04-25 14:26:23 · 321 阅读 · 0 评论 -
数据结构与算法14 - 树的应用
文章目录1. 赫夫曼编码 - 最优二叉树1. 赫夫曼编码 - 最优二叉树大幅减少字符串编码成二进制数的长度 – 比固定长度ASCII编码减少50% 字符编码:将字符转成二进制进行网络传输字符编码方法1. 纯ascii编码 - 每个字符都转成固定8位二进制 -- 占用空间大2. 计算句子同样字符出现个数,自己定义不定长的二进制位数进行表示字符,一啊不般出现次数越多,位数越少 - ...原创 2020-04-25 14:22:07 · 158 阅读 · 0 评论 -
数据结构与算法13 - 树
文章目录0. 遍历二叉树1. 基本类 - Student、TreeEnumeration2. 二叉排序(查找)树3. 顺序存储二叉树 - 完全二叉树结构4. 线索化二叉排序树5. 最优二叉(赫夫曼)树6. 平衡二叉树(AVL树)7. 多路查找树 - 多叉树7.1 B树 - 所有叶子节点必须在同一层0. 遍历二叉树 方式前序遍历:根 → 左子树 → 右子树中序遍历:左子树 → 根 ...原创 2020-04-25 14:19:52 · 255 阅读 · 0 评论 -
数据结构与算法12 - 哈希(散列)表
哈希表思路:一个数组存多个链表 - 当存东西进入时,根据东西的特性将其添加到某个数组链表中,查找元素时,根据东西特性进行从数组中某个链表进行查找 Student.javapublic class Student { Integer id; String name; Integer year; public Integer getId()...原创 2020-04-25 14:06:34 · 199 阅读 · 0 评论 -
数据结构与算法11 - 查找算法
文章目录1. 顺序(线性)查找2. 二分(折半)查找 - 有序的元素组2.1 递归2.2 非递归 - 循环3. 插值查找 - 有序的元素组4. 斐波那契(黄金分隔)查找 - 有序的元素组1. 顺序(线性)查找思路:从头元素开始逐一开始与被查找元素比较 - 相等则返回,不想等则继续下一个元素,直至遍历完整个容器 public class SequentialSearch { p...原创 2020-04-25 14:04:42 · 141 阅读 · 0 评论 -
数据结构与算法10 - 斐波那契数列Fibonacci
Fibonacci数列特点头两个元素都为1从第三个元素起,当前元素数值为前两个元素的数值和例如:1, 1, 2, 3, 5, 8, 13 ......... 总结了四种方法生成Fibonacci数列 - 有3种是递归、有1种不使用递归public class FibonacciUtil { // 返回斐波那契数列第index个位置的数字 public static in...原创 2020-04-25 14:01:13 · 447 阅读 · 0 评论 -
数据结构与算法5 - 队列
文章目录队列 - 先进先出 - 线性结构1.1 简单数组队列 - 只能存满一次1.2 环形数组队列1.2.1 代码实现1.2.2 测试代码队列 - 先进先出 - 线性结构可使用 数组、链表进行实现1.1 简单数组队列 - 只能存满一次特点:队首出队( front改变 )、队尾入队( rear改变 )front == rear → 队列为空rear == 数组最大下标 → ...原创 2020-04-25 13:58:23 · 116 阅读 · 0 评论 -
数据结构与算法3 - 逆波兰表达式计算、中缀表达式转逆波兰表达式
文章目录1. 概述2. 逆波兰表达式计算2.1 代码实现2.2 测试代码3. 波兰表达式计算3.1 代码实现4. 中缀表达式 转 后缀表达式4.1 代码实现4.1.1 定义一个中缀转后缀表达式的类4.1.2 获取操作符的优先级4.1.3 中缀转后缀的过程函数4.1 测试代码1. 概述算术表达式都可以转换成二叉树、然后根据要求进行遍历二叉树的元素表达式波兰表达式:二叉树前序遍历(中左右)中...原创 2019-12-15 16:04:52 · 1097 阅读 · 0 评论 -
数据结构与算法4 - 栈
文章目录概念数组 - 模拟栈代码实现测试代码双向链表 - 模拟栈代码实现测试代码应用:模拟算术表达式计算 - 利用上面的双向链表栈图片解释代码实现① 定义一个OpationalExpression类② isArithmeticExpression() -- 校验算术表达式③ sResult() -- 核心代码 - 计算数栈弹出两个元素、操作符栈弹出一个元素进行得到计算结果④ result() --...原创 2019-12-09 02:23:21 · 514 阅读 · 0 评论 -
数据结构与算法7 - 单向环形链表
文章目录单向环形链表 - 无头指针测试类增加元素、遍历链表代码实现 - 增加元素代码实现 - 遍历节点测试代码约瑟夫出队 -- 需改变链表结构代码实现约瑟夫问题代码测试 单向环形链表 - 无头指针测试类class Student2 { private int id; private String name; public Student2(int id, String name...原创 2019-12-07 18:11:25 · 346 阅读 · 0 评论 -
数据结构与算法8 - 双向链表
文章目录概念双向链表 - 添加节点到尾部代码实现测试代码双向链表 - 删除节点代码实现测试代码双向链表 - 逻辑有序添加到链表测试代码概念检索起点跟单向链表一样每个节点有指向上一个节点、以及下一个节点的指针 双向链表 - 添加节点到尾部代码实现class DoubleLinkedList<T> { // 链表头指针 Node<T>...原创 2019-12-06 10:47:03 · 168 阅读 · 0 评论 -
数据结构与算法6 - 单向链表 - Java
文章目录概念单链表 - 新元素直接添加到尾部代码实现测试单链表 - 新元素动态添加到链表代码实现测试代码单链表 - 链表元素删除代码实现单链表 - 获取链表有效节点的个数代码实现单链表 - 获取倒数第n个节点的数据代码实现单链表 - 节点反转代码实现单链表 - 从尾开始打印节点代码实现1 - 改变链表结构代码实现2 -- 利用堆栈存储节点单链表 - 合并两个有序的链表代码实现测试代码概...原创 2019-12-05 11:02:56 · 299 阅读 · 0 评论 -
数据结构与算法1 - 稀疏数组
文章目录稀疏数组 - 只存储有效元素的位置信息与有效值1.1 代码实现1.2 测试 - 代码稀疏数组 - 只存储有效元素的位置信息与有效值1.1 代码实现背景: 做个五子棋棋盘,整个棋盘由二维数组的0( 无棋 )、1( 白方棋 )、2( 黑方棋)元素进行映射棋盘,如果我想把当前状态的棋盘信息序列化到硬盘上,存储了大量的无用信息0,故可用稀疏数组来进行缩小存储的信息 实现步骤...原创 2019-12-03 00:35:58 · 180 阅读 · 0 评论 -
数据结构与算法9 - 二叉树概念
文章目录树1.1 二叉树1.1.1 满二叉树1.1.2 完全二叉树1.1.3 堆1.1.4 斜树1.1.5 二叉查找( 排序 )树1.1.6 平衡二叉树1.1.0 遍历树不限制每个节点的子节点个数专业术语高度、深度:树的层数节点:每个元素代表一个节点根节点:无父亲的节点子节点:父节点的儿子叶子:无儿子的节点度节点度:当前节点的子节点个数树的度:树中最大的节点度1.1 二叉树每个元素...原创 2019-10-11 01:51:46 · 405 阅读 · 0 评论 -
数据结构与算法2 - 内部排序算法 - java
文章目录1. 交换排序1.1 冒泡排序 - 稳定1.2 快速排序 - 不稳定2. 插入排序2.1 直接插入排序 - 稳定2.2 希尔( 递减增量 )排序 - 不稳定3. 选择排序 - 稳定3.1 简单选择排序3.2 堆排序4. 归并排序 - 稳定5. 基数( 桶 )排序 - 稳定文章中几乎所有图片来自百度、谷歌图片搜索引擎查找排序特点稳定性稳定:排序前a=b,不会因为排序后a,b的相对位置...原创 2019-10-11 01:46:18 · 499 阅读 · 0 评论