![](https://img-blog.csdnimg.cn/5f62f87972b5425ab76b8bad5d13c5e8.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法/数据结构
文章平均质量分 71
《数据结构与算法分析-java语言描述》
骆言
萌新
https://lawsssscat.blog.csdn.net/article/details/104581136
展开
-
【笔记】【一文解决】编码 - ASCII、Unicode(utf-8、utf-16、utf-32):码点(码位)、码元、平面、编码方式、BOM、乱码(排查、解决)、正则匹配
这里我们可能会想到,那就取个最大的,假如 Unicode 中最大的字符用 4 字节就可以表示了,那么我们就将所有的字符都用 4 个字节来表示,不够的就往前面补 0。这样确实可以解决编码问题,但是却造成了空间的极大浪费,如果是一个英文文档,那文件大小就大出了 3 倍,这显然是无法接受的。UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,是目前互联网上使用最广泛的一种 Unicode 编码方式,它的最大特点就是可变长。原创 2019-12-05 15:09:43 · 2865 阅读 · 1 评论 -
【笔记】加密算法:PBEncrypt(hash消息摘要:MD5、SHA;对称加密:DES、AES;非对称加密:RSA)
整理加密算法的多种种类、作用、原理、理论实现、Java实现 如:MD5、SHA、DES、AES、RSA摘要 🤐、对称 🔐、非对称 🎺原创 2020-03-17 23:36:55 · 2964 阅读 · 2 评论 -
【笔记】『排序算法·整理』〔复杂度、稳定性、适用范围〕〖包含:插入排序(简单、折半、希尔)、交换排序(冒泡、快速)、选择排序(简单、堆排序)、归并排序、基数排序、...〗
算法类型 算法名称 时间复杂度 空间复杂度 稳定性 适用于最好 平均 最坏插入排序 直接插入排序 O(n) O(n^2) O(n^2) O(1) 稳定 顺序表、链表(前后双向)折半插入排序 O(n) O(n^2) O(n^2) O(1) 稳定 顺序表希尔(插入)排序 理论区间内:o(n^1.3) o(n^2) O(1) 不稳定 顺序表交换排序 冒泡(交换)排序 O(n) O(n^2) O(n^2) O(1) 稳定 顺序表、链表(前后双向)快速(交换)排序 O(n*log2(n)) O(n^2)原创 2019-11-01 11:55:19 · 1221 阅读 · 1 评论 -
素数 - 判断、生成 - isPrime()、nextPrime()
判断素数、生成素数原创 2019-11-19 20:53:21 · 2913 阅读 · 0 评论 -
一文搞懂 Base64 , 简单!
Base64是一种用64个字符来表示任意二进制数据的方法。相信我们都知道ASCII 编码,从A-Z、a-z、0-9和一些其他的特殊字符,这些字符都有唯一的一个数字来表示。同理Base64也有这样一套编码。范围是”A-Z“、”a-z“、”0-9“、”+“、”/“一共64个字符。我们给出一个表格来看一下,这个比ASCII编码要简单多了,只有64个。由于索引是从0开始,所以最后的索引是63。Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。网络上传递图片:编码图片的话,会把字符 和原创 2020-03-14 09:57:49 · 2051 阅读 · 3 评论 -
【笔记】 emoji 字符的识别与过滤
像下面这种字符,是本文要讨论的 emoji 字符:😄😊😃😍😉Emoji 是 Unicode 的一部分,它在 Unicode 中有对应的码点( CodePoint),也就是说,Emoji 符号就是一个 Unicode 字符。原创 2019-12-07 15:19:42 · 997 阅读 · 0 评论 -
【彻底理解】【背包问题】0-1背包问题
有三种基本背包问题: 0/1背包问题、完全背包问题、多重背包问题这里先来解决01背包问题。原创 2022-10-02 20:06:38 · 1035 阅读 · 2 评论 -
【笔记】将 “没有空格的全拼编码” 按音节(韵母/元音/圆音/圓音/syllabify)分词『rime』『输入法』〔Java、Lua 实现〕
本分词基于汉语拼音的规则进行简单的分词。原创 2022-09-29 20:57:21 · 385 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - 探测散列表 - java 代码实现
文章目录添加、查找删除惰性删除HashEntry 引用数组的每一项是下列3钟情形之一:null。非null。且该项是活动的(isActive 为 true)。非null。且该标记已经被删除(isActive 为 false)。...原创 2019-11-29 15:14:05 · 113 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - String三种hashCode计算方法(ASCII表,Horner法则,String内部的重写)
说明《数据结构与算法分析-java语言描述》,有个对比ASCII计算的String的HashCode。private int hashFunction1(String sc) { int hashVal = 0; char[] cs = sc.toCharArray(); for (char c : cs) { hashVal += c; } return has...原创 2019-11-19 09:20:08 · 397 阅读 · 0 评论 -
证明 - HashMap、TreeMap、concurrentHashMap性能对比 - 存储性能 - 【未完:读取性能】
文章目录代码测试结果代码存储相同的数据量,对比两个map的存储时间。package cn.edut;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.TreeMap;public class Test_m...原创 2019-12-02 09:21:59 · 233 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - (自制)散列表 - 分离链接法(separate chaining)
文章目录类架构myHash - 计算 hash 的方法类架构分离链接散列表的类结构package cn.edut.hash;import java.util.List;public class SeparateChainingHashTable <T>{ /** * 构造 * 使用默认大小 */ public SeparateChainingHashT...原创 2019-11-20 14:39:47 · 400 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - 散列函数
Integer如果输入的关键字是整数,则一般就直接放回 Key mod Tablesize,除非Key碰巧具有某些不合乎需要的性质。 /** * Returns a hash code for a {@code int} value; compatible with * {@code Integer.hashCode()}. * * @para...原创 2019-11-18 20:06:35 · 154 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - 不用链表的散列表 - 探测散列表(probing hash table) - 线性探测法、平方探测法、双散列 - 【未完】
文章目录说明特点三种方法说明通常的散列表实现,如HashMap,使用的是 分离链接法(separate chaining),其做法是将散列到同一值得所有元素保留到一个表中。现在,讨论另一种的散列表的实现,探测散列表(probing hash table) 。特点装载因子应该低于 入=0.5 (因为需要表足够大)三种方法线性探测法平方探测法双散列...原创 2019-11-28 19:13:32 · 603 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 -- 练习4.13 编写TreeSet,迭代器使用二叉树查找树。节点添加链表属性
文章目录说明代码说明《数据结构与算法分析-java语言描述》– 练习4.13编写TreeSet类的实现程序,其中相关的迭代器使用二叉树查找树。在每个节点上添加通向下一个最小节点和下一个最大节点的链。为使所编程序更简单,添加头节点和尾节点,它们不属于二叉树的一部分,但有助于使得程序的链表部分更简单。代码package cn.edut.tree;import java.ut...原创 2019-11-16 15:48:24 · 359 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - 表达式树 -后缀表达式录入成表达式树
文章目录说明代码自定义的内部静态TreeNode类实现类测试方法测试结果完整代码说明调用之前写好的Calculator类,可以将中缀表达式转成后缀表达式。(改下方法权限就能调用了)后缀表达式求值、中缀转后缀:https://blog.csdn.net/LawssssCat/article/details/102962279写好的Calculator类https://blog.csdn.n...原创 2019-11-11 16:07:32 · 285 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - AVL树(自制) - 原理、设计与实现
package cn.edut.tree;import java.util.Comparator;public class AVLTree<T extends Comparable<? super T>> { /** * 测试 * 0.无参构造 * 1. 插入(平衡插入) * 2. 打印 : 右 - - - | * 中 ↓ ...原创 2019-11-13 20:52:19 · 247 阅读 · 0 评论 -
【理论】 - 树、二叉树(满二叉树、完全二叉树)和堆
https://blog.csdn.net/qq_41117236/article/details/81029618转载 2020-02-08 23:15:41 · 576 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 -- 两道证明题,关于N节点的二叉树、空节点树、满节点树关系
证明:N个节点的二叉树,存在N+1个null节点令:N = 节点个数每个非根节点,都有父节点:令:F = (需要的)父节点个数F = N-1F 也可以理解为:“全部节点中,有子节点的边数”所以:null节点数 = 2 * N - F = N + 1证明:二叉树的满节点(full node)个数加一等于非空二叉树的树叶的个数...原创 2019-11-15 11:29:41 · 633 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 -- 练习4.11 TreeSet,迭代器使用二叉查找树。节点记录父节点
文章目录说明说明编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树。在每个节点上添加一个指向其父节点的链原创 2019-11-15 16:38:12 · 254 阅读 · 0 评论 -
(回收站)程序 - 计算AVL树h高度时候,最小的节点数
说明:计算“计算AVL树h高度时候,最小的节点数”使用公式:ah=ah−1+ah−2+1a_h=a_{h-1}+a_{h-2}+1ah=ah−1+ah−2+1ah:AVL树h高度时候,最小的节点数a_h:AVL树h高度时候,最小的节点数ah:AVL树h高度时候,最小的节点数代码package cn.edut.tree;public class Demo_countHof...原创 2019-11-16 17:36:24 · 850 阅读 · 0 评论 -
【笔记】二叉树(递归、栈)遍历、中序线索建立和遍历
二叉树(递归)遍历二叉树(栈)遍历建立中序线索、遍历中序线索(补丁)释放内存《王道2022考研数据结构复习指导》P136左右打印2021年06月19日18:02:03 --15 --14 --13 --12 --11 --10 --9 --8--7 --6 --5 --4 --3 --2 --1------------------------------------ --1 --2 --3.原创 2021-06-20 01:48:34 · 302 阅读 · 1 评论 -
双指针
《详解二分查找算法》 https://www.cnblogs.com/kyoner/p/11080078.html《双指针技巧汇总(转)》 https://blog.csdn.net/xxdddail/article/details/93735314《算法 | 双指针套路总结》https://zhuanlan.zhihu.com/p/95747836...原创 2020-02-24 09:03:23 · 251 阅读 · 0 评论 -
【详细过程】- 将n个球随机放入N个盒中,并且每个球放入各个盒子是等可能的,求有球的盒子数X的数学期望
定义随机变量Xi如下:当第i个盒子中有球时Xi=1,当第i个盒子中无球时:Xi=0(i=1,2,3,…N)则Y=X1+X2+X3+…+XN 就是有球的盒子的个数.由于每个球放进该盒子的概率为:1/N.而不放入该盒子的概率为:(1-1/N).每个是否放入该盒子相互独立,故N个球均不放入该盒子的概率为:(1-1/N)^N, (1)而至少有一个球放入该盒子的概率为:1-(1-1/N)^N...原创 2019-12-02 16:42:40 · 13043 阅读 · 1 评论 -
证明:球盒问题 -若N个球被放入M=N^2个盒子,则没有任何盒子装有超过1个球的概率不小于1/2。 - 【未完】
说明:证明:球盒问题 -若N个球被放入M=N^2个盒子,则没有任何盒子装有超过1个球的概率不小于1/2。数学语言描述:P(A) > 1/2A="存在iϵM=N2,αi>1存在i \epsilon M=N^{2},\alpha _{i}^{}>1存在iϵM=N2,αi>1"N = α1+...+αM\alpha _{1}^{}+...+\alpha _{...原创 2019-12-02 15:13:51 · 277 阅读 · 0 评论 -
Integer.hightestOneBit(int i) - 源码解析
文章目录源码作用代码分析Part1:把最左边的1的右边全部转换成1Part2:把最左边的1的右边全部转换成0源码 /** * Returns an {@code int} value with at most a single one-bit, in the * position of the highest-order ("leftmost") one-bit in th...原创 2019-11-23 10:08:51 · 322 阅读 · 0 评论 -
单链表 - 单链表的反转 - 腾*和*迅的面试题
文章目录说明代码实现简单的单链表reverse()@Test调用完整代码测试结果说明首先,弄一个简单的单链表,包括首尾节点、大小add()、show()、Node静态内置类然后,添加reverse(),实现反转功能最后,写测试方法,@Test调用其中,reverse的实现思路为:(转向操作)创建indexNodeNextShould\color{#4285f4}{index...原创 2019-11-10 21:47:41 · 156 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》- 练习3.6 “死亡轮盘” Josephus问题
文章目录实例说明实例代码Node类代码实例说明Josephus问题(Josephus problem)是下面的游戏:N\color{#00ff11}{N}N个人编号冲1到N\color{#00ff11}{N}N,围坐成一个圈。号码1的人有一个“土豆”,向后传递“土豆”。经过M\color{#005ff5}{M}M次传递后,手拿“土豆”的人被清理出场。最后剩下的人获得胜利。实例计算...原创 2019-11-10 20:38:26 · 317 阅读 · 0 评论 -
C/C++ - 数据结构(链表、栈、队列、树(二叉树))、动态数组
用递归减少运行时间通过递归,缩小问题的范围。O(logN)不用递归1.递归调用之后,实际上没有必要知道存在的值比如://(尾递归)尾递归可以通过将代码放到一个while循环中并用每个方法参数的一次赋值代替递归调用而被手工能消除。//(尾递归)public static <T> void printList(Iterator<T> itr){ if(!...原创 2019-11-09 14:54:59 · 872 阅读 · 0 评论 -
(回收站)后缀表达式求值
package cn.edut.test_stack;import java.util.Stack;import org.junit.Test;public class Demo02_postfix { @Test public void test01() { System.out.println("Test1:后缀求值"); String s = "6 5 2 3...原创 2019-11-08 22:49:10 · 267 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 - 1.4.3 使用接口类型表示泛型(代码)
用lang里面的,要重写好多方法。直接在下面重写类算了应该是这样实现吧。。package cn.tedu.basic;public class Demo_FindMax { /** * Return max item in arr * Precondition:arr.length>...原创 2019-11-01 15:01:47 · 101 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》- 练习1.5递归实现“计算N的二进制表示中的1的个数”
方法 :count 实现练习需求的功能print 打印二进制形式 (十进制转二进制)package cn.tedu.exercise;public class Test1_5 { public static void main(String[] args) { Integer N = 195521 ; //数 Integer c = 2; //进制 print(N,...原创 2019-11-03 18:53:36 · 216 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》- 练习1.13和1.14设计一个泛型类,提供isPresent、finMax方法
需求设计一个泛型集合类,提供public方法isEmpty、makeEmpty、insert、remove、isPresent、findMax、findMin方法。代码结构代码测试类package cn.edut.test1_14;import java.util.Comparator;public class Test_OrderCollection { public st...原创 2019-11-04 10:30:32 · 257 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 -- 判断是否为素数
package cn.edut.test_algorithm;/** * 判断是否为素数 * 素数定义:质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 * * Note:2也是素数,因为除了1和它本身以外不再有其他因数 * @author Administrator * */public class Demo_isPrimeNumber { public ...原创 2019-11-05 18:00:25 · 276 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》- 练习2.16 欧几里得算法
gcd方法:欧几里得算法/** * 第二章练习 2.16 * @param max * @param min * @return */ public static long gcdd(long a, long b){ long max=a>b?a:b; long min=a>b?b:a; if(max == 0|| min == 0) {//bas...原创 2019-11-05 12:08:02 · 220 阅读 · 0 评论 -
《数据结构与算法分析-java语言描述》 -- 三个时间复杂度为对数的例子
文章目录幂运算欧几里得算法折半查找(太废了,懒得写)幂运算package cn.edut.test_algorithm;public class Demo_PowerOperation { public static void main(String[] args) { //n>=1 System.out.println(pow_bad(2,10)); // 1024 ...原创 2019-11-05 11:18:41 · 252 阅读 · 0 评论