
算法
文章平均质量分 77
常见算法
余 一
人类的悲欢并不相通
展开
-
【数据结构】布隆过滤器
文章目录前言1.什么是布隆过滤器?2. 布隆过滤器的原理介绍3.布隆过滤器使用场景4.通过 Java 编程手动实现布隆过滤器5.利用 Google 开源的 Guava 中自带的布隆过滤器6. Redis 中的布隆过滤器6.1 介绍6.2 使用Docker安装6.3常用命令一览实际使用前言海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用转载 2021-07-05 09:08:36 · 230 阅读 · 0 评论 -
【算法】快速排序 —— 三数取中法
前言快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列基本步骤三数取中在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。根据枢纽值进行分割代码实现转载 2021-06-16 10:27:54 · 4094 阅读 · 1 评论 -
【算法】超有爱的并查集~
例子就是杭电上的畅通工程:首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,不用再修路了;如果是2个...转载 2019-09-04 10:13:43 · 156 阅读 · 0 评论 -
【算法】最小生成树之Kruskal算法
给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree)。如果是带权值的无向图,那么权值之和最小的生成树,我们就称之为最小生成树(MST, Minimum Spanning Tree)。我们由最小生成树的定义,可以延伸出一个修建道路的问题:把无向图的每个顶点看作村庄,计划修建道路使得可以在所有村庄之间通行。把每个村庄之间修建道路的费用看作权值,那么我们就可以得到一个求解修建道路的最小费用的问题。常见求解最小生成树的算法有Kruskal算法和Prim算法转载 2021-02-21 22:25:50 · 539 阅读 · 0 评论 -
【算法】约瑟夫环问题
约瑟夫问题约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。例如只有三个人,把他们叫做A、B、C,他们围成一圈,从A开始报数,假设报2的人被杀掉。首先A开始报数,他报1。侥幸逃过一劫。然后轮到B报数,他报2。非常惨,他被杀了C接着从1开始报数接着轮到A报数,他报2。也被杀死了。最终胜利者...转载 2019-09-15 18:06:37 · 808 阅读 · 0 评论 -
【算法】归并排序
归并排序: 思路:每一次尽量把元素分成尽量相等的两半[x, m), [m, y)。两半的元素分别排序(递归求解),再把两个有序表合并成一个。(x 为排列元素起始的下标, y 为排列元素终止的下标 + 1,m 为 x + (y - x )/ 2 )递归出口: 当且序列元素的长度为1时,递归结束。合并的过程: 每次把两个序列的最小元素加以比较,把最小元素加入新表。只要一个序列非空就要继续合并...原创 2018-02-12 11:52:47 · 405 阅读 · 0 评论 -
【算法】素数(质数)判断方法
素数(质数)的判断在算法问题中经常遇到,这里小结几种常用的判断方法。首先,我们来看一下素数(质数)的定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。我们可以从它的定义得到判断素数的 第一个方法: 从2到n - 1, 判断是否存在能被n整除的数,既(n%i == 0, 2 <= i <= n - 1),如果有就不是素数,否则为素数。(这里为了比原创 2017-11-29 17:05:32 · 63455 阅读 · 8 评论 -
【算法】快速排序
快速排序的思想快速排序通过将一个数组划分成两个子数组, 然后通过递归调用自身为每一个子数组进行快速排序来实现.如何进行划分设定关键字(基准数), 将比关键字小的放在一组, 比关键字大的放在另一组.下面将以数组[6,1,2,7,9,3,4,5,10,8]为例, 演示排序过程原创 2018-02-22 11:20:27 · 331 阅读 · 0 评论