数据结构及算法
不叫木木叫什么呢
这个作者很懒,什么都没留下…
展开
-
LRU缓存淘汰学习
一、概念 LRU (least Reacently Used),最近最少使用,一种缓存淘汰策略 二、应用场景: LinkedHashMap、数据库连接池、Redis、CUP高速缓存 三、核心思想: 取长时间内没有访问的淘汰,队列的形式,当重新访问时则会挪到队列头部,当空间不足时从尾部开始删除,如图: 四、实现: 实现思路: 想要实现这个效果,首先要有排序,用顺序/时间戳等形式记录访问顺序 不考虑时间复杂度的话,二维数组/链表可以做到 数组每访问一次就要修改数据,维护成本高,时间复杂度为O(n) 链表插入删原创 2020-12-28 20:43:38 · 194 阅读 · 0 评论 -
Java集合之HashMap源码分析(面试总结)
梳理HahsMap知识,文章结构及思路如下: 目录 特点及应用场景 继承关系 数据结构 常用方法 面试题 深层扩展 特点及应用场景 继承关系 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { 数据结构 数组+链表+红黑树(JDK1.8增加了红黑树部分) ...原创 2020-10-12 20:53:59 · 622 阅读 · 2 评论 -
数据结构与算法之快速排序
【前言】 快速排序原理简单,使用方法经典,实现起来要比想象中困难些,本博客旨在总结理论,梳理思路,记录实现过程 【正文】 一、理论 快速排序,分治法,分治递归时它的核心思想,将一组数通过规则分成几部分,每一部分再按照相同规则进行处理,大事化小,小事化了。时间复杂度平均为O(nlogn),最坏为O(n*n)。 二、实现思路 简单来说,取一数字,比他小的放左边,大的放右边,而后子递归 1.随机取一个基准点,基准点取得越靠近中间值,算法时间效率越高,这里不对如何取值...原创 2020-07-02 16:39:10 · 121 阅读 · 0 评论 -
数据结构与算法之冒泡排序
思想 每次循环,会通过不断地左右对比把最大值放到右边 内循环对比完成后,外层循环中下次循环的对比边界比上次循环的对比边界左移(i-1) 图解 动画来源于微信公众号【五分钟学算法】 基础版 public List BubbleSort(List<Integer> list){ for (int i = 0;i<list.size()-1;i++){ for (int j= 0;j<list.size()-i-1;j++){ .原创 2020-07-02 11:44:22 · 151 阅读 · 0 评论