![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 92
勤径苦舟
书山有路勤为径,学海无涯苦作舟。
展开
-
算法--基础--01--MD5
全称Message-Digest Algorithm(消息摘要算法)是一种hash函数,可以产生出一个128bit的散列值(大整数)是一个不可逆的字符串变换算法:换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个。原创 2024-04-23 20:54:08 · 816 阅读 · 0 评论 -
SnowFlake 算法
SnowFlake 算法1、介绍是 Twitter 开源的分布式 id 生成算法。核心思想:使用一个 64 bit 的 long 型的数字作为全局唯一 id。2、结构0 - 0001000000 0000010000 0001000100 0000100000 0 - 10001 - 11001 - 000000000000 2.1、第1部分:1bit1 个 bit这个是无意义的无意义原因因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数原创 2021-12-28 20:08:18 · 519 阅读 · 0 评论 -
栈
先进后出代码package arithmetic.feizhou.com;/** * * 栈列 * */public class Stack { public int[] date =new int[100] ;// 栈列的主体,用来存储内容 public int tail=0; public static void main(String[] args)...原创 2019-02-28 19:07:33 · 145 阅读 · 0 评论 -
队列
先进先出 火车头过隧道模型 出队:进行删除操作 入队:进行插入操作 空队列:队类没有元素(head==tail)package arithmetic.feizhou.com;/** * * 队列 * */public class Queue { public int[] date =new int[100] ;// 队列的主体,用来存储内容 public ...原创 2019-02-28 18:31:02 · 129 阅读 · 0 评论 -
快速排序
平均时间复杂度O(NlogN)最糟糕情况下(倒序或正序)的时间复杂度O(N^2)图表示代码package arithmetic.feizhou.com;/** * * 快速排序 * */public class QuickSort { public static void main(String[] args) { // 生成数据源...原创 2019-02-28 17:54:23 · 97 阅读 · 0 评论 -
冒泡排序+怎么计算时间复杂度
冒泡排序的基本思想 时间复杂度为O(N^2)每次比较两个相邻元素,如果他们的顺序错误就把它们交换过来。举个栗子例如我们需要将 12,35,99,18,76, 5个数进行从大到小排序,既然是从大到小排序,也就是越小越靠后。首先比较第一个数和第二个数,第一个是12,第二个是35,发现12 小于35,由于是越小越靠后,因此要对这两个数交换位置,那么交换后的顺序为 35,12,99...原创 2019-01-02 17:10:48 · 17214 阅读 · 1 评论 -
桶排序
介绍桶排序是一种时间复杂度为O(M+N)的一种排序,不好的地方在于浪费空间。特点是利用了数组的索引。桶的个数是排序的最大数+1。打个案例:要对一堆数据进行时间复杂度为O(M+N)的排序就可以使用这个算法,缺点:打个比方,有10个要排序的数,其中最大数是1000,那么你申请的桶就需要1001。 案例这个算法就好比有11个桶,编号从0~10。每出现一个数,就将对应编号的桶中...原创 2019-01-02 14:46:20 · 174 阅读 · 0 评论 -
深度优先算法dfs
转载https://blog.csdn.net/u014394715/article/details/51192293 深度优先算法定义深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直...转载 2018-11-07 22:52:25 · 984 阅读 · 0 评论 -
深入理解 Dijkstra 算法实现原理
转载https://www.jianshu.com/p/ff6db00ad866迪杰斯特拉(Dijkstra)算法1典型最短路径算法,用于计算一个节点到其他节点的最短路径。 2特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。参考博客:数据结构--Dijkstra算法最清楚的讲解大概就是这样一个有权图,Dijkstra算法可以计算任意节点到其他节点的最短路径...转载 2018-11-07 20:40:06 · 414 阅读 · 0 评论 -
布隆过滤器的简单介绍与实例(Bloom Filter)
转载https://blog.csdn.net/leeafay/article/details/78681534布隆在1970年提出了布隆过滤器(Bloom Filter),是一个很长的二进制向量(可以想象成一个序列)和一系列随机映射函数(hash function)。 布隆过滤器可以用于检索一个元素是否在一个集合中。 优点:占用空间小,查询快 缺点:有误判,删除困难1、原理a....转载 2018-11-06 07:52:24 · 407 阅读 · 0 评论 -
缓存淘汰算法--LRU算法
1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 1.2. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:新数据插入到链表头部;每当缓存命中(即缓存数据被访问),则将数据移到链表头部;当链表满的时候,将链表尾部的数据丢转载 2017-06-24 15:05:28 · 391 阅读 · 0 评论 -
排序算法+二分查找
1冒泡排序 相邻比较,大的放右边,最大值在索引最大处 for(int i=0;i<arr.length-1;i++){ //arr.length-1-i每比较一次,下次比较扣除最大长度的值 for(int m=0;m<arr.length-1-i;m++){ //相邻比较,大的放右边原创 2017-04-03 00:09:07 · 325 阅读 · 0 评论