
算法
文章平均质量分 55
键盘歌唱家
是金子总会发光
展开
-
LRU算法
一、简介LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。他是redis的一种常用淘汰策略,只是Redis中的LRU与常规的LRU实现并不相同,常规LRU会准确的淘汰掉队头的元素,但是Redis的LRU并不维护队列,只是根据配置的策略要么从所有的key中随机选择N个(N可以配置)要么从所有的设置了过期时间的key中选出N个键,然后再从这N个键中选出最久没有使用的一个key进行淘汰。二、利用Java来手写LRU算法1.通过L原创 2021-08-24 11:04:12 · 208 阅读 · 0 评论 -
贪心算法解决集合覆盖问题
贪婪算法简介:贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果题目:假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区 都可以接收到信号。我们解决这个问题的方法就是贪婪算法,思路如下:1)遍历所有的广播电台, 找到一个覆盖了最多未覆盖的地区的电台(此电台可原创 2021-06-04 18:32:46 · 761 阅读 · 0 评论 -
动态规划解决背包问题
背包问题:有一个问题,容量为4榜,现有如下物品:解决方法就是我们本篇博客提出的动态规划思路分析和图解算法的主要思想,利用动态规划来解决。每次遍历到的第 i 个物品,根据 w[i]和 v[i]来确定是否需要将该物品 放入背包中。即对于给定的 n 个物品,设 v[i]、w[i]分别为第 i 个物品的价值和重量,C 为背包的容量。再令 v[i][j] 表示在前 i 个物品中能够装入容量为 j 的背包中的最大价值。则我们有下面的结果:(1) v[i][0]=v[0][j]=0; //表示原创 2021-06-04 18:13:43 · 186 阅读 · 0 评论 -
湖北师范大学java习题汇编(超详细!已经进行了章节划分)
表达式和流程控制语句1.验证歌德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。 试编程序,将 6至50之间全部偶数表示为两个素数之和。package kkkk;public class aaa { public int isprime(int n)/*判断n是否为素数的函数*/ { int x=0; for(int j=2;j<n;j++) if(n%j==0) { x=0; break; }else x=1; return x; } public原创 2020-12-02 18:10:09 · 9767 阅读 · 3 评论 -
排序算法总结
堆排序原则:升序使用大顶堆 ,降序使用小顶堆以升序为例,原理:首先按照数组的顺序创造一颗二叉树从最后一个非叶子节点看起,(最后一个非叶子节点就(arr,length-1)/2)如果该节点小于其中的子节点 就交换顺序 一直这样搞这个二叉树就成为了一个大顶堆 这个时候 根节点(数组的第一个元素)就是最大的交换数组的首位元素这时候只考虑数组的长度-1的情况 因为最后一个是最大的 排好了xu就不用管继续上面的操作 第二大数字就放在了数组头部 交换数组第一个和倒数第二个的元原创 2020-05-10 20:48:49 · 195 阅读 · 0 评论