算法
wj-1024
【日积跬步】
展开
-
【算法】java实现用哈夫曼编码对文件进行压缩和解压
【算法】java实现用哈夫曼编码对文件进行压缩和解压1、什么是哈夫曼编码?2、哈夫曼编码如何对信息进行压缩?3、哈夫曼编码如何生成4、java实现用哈夫曼编码对文件进行压缩和解压聊哈夫曼编码前建议先了解一下 【数据结构】哈夫曼树1、什么是哈夫曼编码?哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就原创 2020-07-21 16:23:03 · 2709 阅读 · 2 评论 -
四种常见的限流算法
四种常见的限流算法一、计数器算法二、滑动窗口计数器算法三、漏桶算法四、令牌桶算法一、计数器算法计数器算法是限流算法里最简单也是最容易实现的一种算法,简单来说就是规定单位时间处理的请求数量。比如我们规定我们的一个接口一分钟只能访问100次的话。在一开始,我们设置一个计数器counter,每当一个请求过来,counter就加1,如果counter的值大于100并且该请求与第一个请求的间隔时间还在1分钟之内,那么说明请求数过多。如果该请求与第一个请求的间隔时间大于1分钟,且counter的值还在限流范原创 2020-05-15 14:48:36 · 675 阅读 · 0 评论 -
用Java实现布隆过滤器
布隆过滤器1.什么是布隆过滤器?2.布隆过滤器的原理介绍3.布隆过滤器使用场景4.用Java 实现布隆过滤器1.什么是布隆过滤器?布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于1970年提出的。实际上可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。2.布隆过滤器的原理介绍图解:如图所示,布隆过滤器添加元素时,该元素首先由多个原创 2020-05-11 15:47:03 · 10530 阅读 · 2 评论 -
【算法】排序算法(基数、归并、快速、希尔、插入、选择、冒泡、堆)
【算法】排序算法(基数、归并、快速、希尔、插入、选择、冒泡)1、基数排序1.1 图解1.2 代码实现2、归并排序2.1 图解2.2 代码实现3、快速排序3.1 图解3.2 代码实现4、希尔排序4.1 图解4.2 代码实现5、插入排序5.1 图解5.2 代码实现6、选择排序6.1 代码实现7、冒泡排序7.1 代码实现8、 常用排序算法对比1、基数排序基数排序(radix sort)又称桶排序(...原创 2020-03-29 22:00:30 · 184 阅读 · 0 评论 -
【算法】 八皇后问题--回溯算法
1、八皇后问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。2、java实现p...原创 2020-03-04 20:45:35 · 361 阅读 · 0 评论 -
【算法】用栈实现逆波兰计算器
逆波兰计算器就是使用逆波兰表达式实现的计算器1.什么是逆波兰表达式逆波兰表达式又叫后缀表达式那什么又叫后缀表达式?举例说明:(3+4)×5-6 就是中缀表达式,其对应的后缀表达式就是3 4 + 5 × 6 -有中缀有后缀就有前缀,(3+4)×5-6的前缀表达式就是:3 4 + 5 × 6 –简单来说,中缀表达式就是我们常见的计算表达式,对我们人类很友好,但对计算机不友好,相反,后缀表...原创 2020-03-01 13:49:05 · 213 阅读 · 0 评论 -
【算法】约瑟夫问题--环形单链表实现
1.约瑟夫问题又称为约瑟夫环,丢手绢问题等。来历:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephu...原创 2019-12-27 16:53:10 · 2386 阅读 · 0 评论