
算法
文章平均质量分 57
盖丽男
这个作者很懒,什么都没留下…
展开
-
【算法】链表反转
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。要求:空间复杂度 ,时间复杂度。如当输入链表{1,2,3}时,原创 2023-07-06 20:10:18 · 406 阅读 · 1 评论 -
动态规划
动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。原创 2022-12-11 18:21:53 · 461 阅读 · 0 评论 -
排序算法及java实现
排序算是非常基础的算法,为什么我们需要排序算法呢?假设我们只有10个数,或者100个数,其实根本不需要研究这么多的排序算法,正常我们会使用的插入排序或者选择排序足够了,没必要发明快排,基数排序这些。只有将需要排序的量非常大,我们才开始需要一些效率更高,更合适的排序算法。看一下常见的几种排序算法的效率:来解释一下稳定性的意思,稳定性的意思是说,相等的数在排序后仍然保持排序前的相对顺序。原创 2022-11-26 12:37:52 · 338 阅读 · 0 评论 -
哈夫曼编码的应用场景
1951年,哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是,寻找最有效的二进制编码。由于无法证明哪个已有编码是最有效的,哈夫曼放弃对已有编码的研究,转向新的探索,最终发现了基于有序频率二叉树编码的想法,并很快证明了这个方法是最有效的。哈夫曼编码,又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。...原创 2022-08-28 12:24:22 · 3394 阅读 · 0 评论 -
LRU的java实现
什么是LRULRU(Least Recently Used)直译来看,就是最近最少使用,因为LRU是一个淘汰算法,所以指的是,每次都淘汰离当前时间最远的被使用到的那一个。也就是最久没有被使用到的那个。为什么需要LRULRU其实大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法,是为了提高页面的命中率而使用的算法,就应用开发来说,Redis的内存淘汰策略使用的就是LRU算法,当Redis内存使用打到上限,如果采用的 allkeys-lru 删除策略,此时我们再增加key,redis就会根据LR原创 2021-02-07 13:22:37 · 365 阅读 · 1 评论 -
选择排序
学习这些算法,不仅仅是要学习使用,更要学习的是其中的思想。举例那么说到选择排序,大家可以先想一下,生活中,什么地方会用到选择排序呢?我先来给大家举几个例子:打麻将的时候,咱们是不是先把所有牌都展开,然后用选择排序的思想去排顺序呢?还是扑克牌,当我们整理扑克牌是直接按照顺序来排序,每次都选择最小的牌来放。思考那么选择排序的中心思想是什么呢?从无序到有序的这个过程,最重要的一个思想是...原创 2018-12-05 00:55:05 · 254 阅读 · 1 评论 -
插入排序
学习这些算法,不仅仅是要学习使用,更要学习的是其中的思想。举例那么说到插入排序,大家可以先想一下,生活中,什么地方会用到插入排序呢?我先来给大家举几个例子:上体育课,会要求按照大小个排队,此时如果大部分人已经排好了队,新来的人在插入式,一般使用的都是插入排序。我们给随机的扑克牌排顺序,也是使用插入排序。大家整理钱包的时候,是不是也会按照插入排序将钱按照大小顺序放起来。思考那么插入...原创 2018-12-04 00:21:07 · 280 阅读 · 1 评论