![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 85
pumpkin的玄学
路漫漫其修远兮,吾将上下而求索。
展开
-
HashMap 1.8全流程分析,详解put、resize、遍历等相关函数。以及其内部的二进制原理
从常用属性->构造方法->添加->扩容->查询->删除->遍历的顺序进行`HashMap`源码阅读,涉及到一些二进制的用法以及意义也会进行说明。原创 2023-05-28 23:34:00 · 883 阅读 · 2 评论 -
归并排序介绍、详解、案例
如果慢指针一次走一步,快指针一次走两步,当快指针走到链表尾部时,慢指针只走到链表的中央,这样也就找到了链表后半部分的头节点。例如输入的是:[3 -> 5 -> 1 -> 4 -> 2 -> 6] 输出的则是:[1 -> 2 -> 3 -> 4 -> 5 -> 6]。归并排序也是基于分治法的排序算法,为了排序长度为n的数组,需要先排序长度为n/2的字数组,然后合并这两个排序字数组于是整个数组也就排序完毕。归并排序的主要思想是将链表分成两个子链表,在对两个子链表排序后再将它们合并成一个排序的链表。原创 2023-04-05 20:54:28 · 654 阅读 · 3 评论 -
快速排序介绍、详解、案例
如果每次选取的中间值都在排序数组的中间位置,则快速排序的时间复杂度为O(nlogn),但是如果每次选取的中间值都是排序数组的头部或者尾部,那么快速排序的时间复杂度为O(n^2)。思路:确保最小堆的容量为K,每次从数组中读取一个数字时都和堆顶的元素进行比较,如果比堆顶的元素大,则移除堆顶元素并且将该元素添加到最小堆之中。例如,数组[3,1,2,4,5,5,6]中第3大的数字是5。在长度为n的排序数组之中,第k大的值在数组中的位置为(n-k)。下面以数组【4,1,5,3,6,2,7,8】来进行解析。原创 2023-03-26 23:54:08 · 660 阅读 · 2 评论 -
计数排序介绍、详解、案例
排序是非常基础并且重要的算法,目前常见的排序算法有`插入排序`、`冒泡排序`、`堆排序`、`计数排序`、`归并排序`和`快速排序`等。原创 2023-02-12 22:11:31 · 556 阅读 · 2 评论 -
前缀树介绍,定义,图文详解分析——Java/Kotlin双版本代码
前缀树,又称作字典树,用一个树状的数据结构储存字典中的所有单词。原创 2022-12-18 22:29:53 · 924 阅读 · 2 评论 -
数据结构堆介绍,图文详解分析——Java/Kotlin双版本代码
堆是一种特殊的树结构。根据根节点的值与子节点值的大小关系,堆又分为最大堆和最小堆。原创 2022-11-27 21:28:26 · 909 阅读 · 3 评论 -
二叉搜索树、红黑树详解、红黑树高的应用、TreeMap的应用(图文详解)-Kotlin版本代码
二叉搜索树、红黑树详解、红黑树高的应用、TreeMap的应用(图文详解)-Kotlin版本代码原创 2022-11-13 21:45:10 · 1302 阅读 · 1 评论 -
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码原创 2022-10-23 22:52:18 · 2073 阅读 · 3 评论 -
利用LRU(Least Recently Used)封装内存缓存LruCache,Kotlin版本。
LRU(Least Recently Used),即最近最少使用,是一种常用的`页面置换算法`,当需要存入的内容大于临界值的时候,选择最近最少使用的进行淘汰。原创 2022-04-05 10:11:51 · 720 阅读 · 0 评论