![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 66
JayLaiSCUT
从事大数据平台和后端开发工作,热爱IT新技术,热爱开源
展开
-
缓存淘汰算法LRU
1 概述LRU(Least Recently Used)算法是一种缓存淘汰算法,当系统的缓存过大,达到删除缓存的阀值时,最先删除最久没有被使用过的数据,被用于操作系统和Redis数据库中。LRU的底层是由哈希算法+链表组成的。哈希算法具有查找高效的优点,却没法保存添加顺序,因此采用链表记录数据的使用顺序。说白了就是数据被存为两份,哈希和链表各一份。在没有达到缓存上限时候,它两相安无事,当达到缓存上限时,根据链表中保存的使用顺序进行删除。2 图解数据移动顺序假设系统缓存的上限为3个节点2.1 向缓存原创 2021-07-27 22:32:55 · 2908 阅读 · 0 评论 -
二叉搜索树
1 重要特性2 完整代码2.1 二叉搜索树的节点/** * 二叉搜索树的节点 * Created by JayLai on 2019-10-05 22:45:58 */public class Node { //索引 int id; //数据项 String name; //右子节点 Node rightNode; /...原创 2019-10-14 23:40:53 · 221 阅读 · 0 评论 -
两栈共享内存
介绍两种共享内存这种数据结构的实现原理和代码原创 2019-08-16 00:52:27 · 1016 阅读 · 0 评论 -
静态链表
静态链表的算法原理和实现代码原创 2019-07-23 23:28:30 · 2724 阅读 · 0 评论 -
位运算的原理和应用
1 十进制,八进制和十六进制2 原码,反码和补码在内存中,数据以二进制的方式存储,且最小单位是字节。对于有符号的数值,无论正反,计算机都是以补码的形式进行存储。1)正数的原码,反码和补码都相同。以整型数字4为例:原码:00000000 00000000 00000000 00000100反码:00000000 00000000 00000000 00000100补码:0000000...原创 2018-12-18 23:34:50 · 2485 阅读 · 0 评论 -
平衡二叉搜索树——红黑树
一、背景二叉搜索树具体较高的运行效率,其查找的时间复杂度为log(N)。但是在极端情况下,假如插入一组从大到小的数据,如图所示,则其查找的时间复杂度变为N。红黑树是在二叉搜索树的基础上,加入红黑性质,使其成为一颗平衡二叉树,从而保证其查找的时间复杂度为log(N),被广泛应用于java的集合框架中,如TreeMap,TreeSet和ConcurrentHashMap。二、红黑性原创 2018-01-28 17:45:22 · 2629 阅读 · 0 评论 -
查找算法-二分法
标题 ##1 原理和步骤有序数组插入和删除操作中,由于所有靠后的数据都需要移动以腾开空间,所以速度较慢。在查找方面,无序数组是通过线性查找,而有序数组可以通过二分法进行快速查找,速度比无序数组快很多。 二分法的时间复杂度为**0(log n)**,具体步骤是先查看数组正中间的数据项,如果那个数据项比要找的大,就要缩小范围,在数组的前半段进行查找;反之则在后半段找。反复这个过程即可。标题 ##2完原创 2018-01-19 09:39:29 · 2604 阅读 · 0 评论 -
哈希算法
本文详细地介绍了哈希算法的原理和用途,并提供3种将关键字转换为哈希值和2种解决位置冲突的方法的原理和实现过程,同时提供算法的实现源码和测试结果原创 2017-09-10 19:14:39 · 3268 阅读 · 0 评论 -
3种简单排序:冒泡排序、选择排序和插入排序
本文详细介绍3种简单排序:冒泡排序,选择排序和插入排序的原理和实现过程,并提供完整的代码和测试结果原创 2017-09-10 18:58:57 · 2768 阅读 · 0 评论 -
快速排序
介绍了快速排序的实现原理和步骤,并提供完整的实现代码和测试结果原创 2017-09-03 23:32:21 · 2465 阅读 · 0 评论 -
希尔排序
详细介绍了希尔排序的原理和实现步骤,并提供了完整的实现代码和运行结果原创 2017-09-03 23:19:27 · 200 阅读 · 0 评论