数据结构与算法
文章平均质量分 62
January丶
个人博客:https://zysite.top
说明:文章优先更新在个人博客站点。
展开
-
Java实现LRU算法(哈希表加双向链表)
LRU LRU 全称 Least Recently Used,意为最近最少使用,是最常见的页面置换算法,也常用于实现缓存淘汰策略。 实现 哈希表 + 双向链表。链表头节点代表最近使用过的数据。 对于 get 操作,首先判断 key 是否存在: 如果 key 不存在,则返回 -1; 如果 key 存在,则 key 对应的节点是最近被使用的节点。通过哈希表定位到该节点在双向链表中的位置,并将其移动到双向链表的头部,最后返回该节点的值。 对于 put 操作,首先判断 key 是否存在: 如果 ke原创 2021-05-26 19:46:46 · 378 阅读 · 0 评论 -
布隆过滤器
布隆过滤器 布隆过滤器(Bloom Filter)是一种来检索元素是否在给定大集合中的数据结构,这种数据结构是高效且性能很好的,但缺点是具有一定的错误识别率和删除难度。并且,理论情况下,添加到集合中的元素越多,误报的可能性就越大。 它由位数组和一系列哈希函数构成。初始时位数组的值全为0。 布隆过滤器原理 加入元素 当一个元素加入布隆过滤器中的时候,会进行如下操作: 使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个哈希值)。 根据得到的哈希值,在位数组中把对应下标的值置为 1。原创 2021-01-08 20:36:39 · 124 阅读 · 0 评论 -
二分查找、插值查找、斐波那契(黄金分割)查找分析与实现(Java)
目录二分查找基本思想算法实现插值查找基本思想算法实现斐波那契(黄金分割)查找基本思想图解算法实现简单测试(JUnit) 二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 基本思想 首先,假设表中元素是按升序排列,将表中间位置记录的关键...原创 2019-08-03 15:28:07 · 964 阅读 · 1 评论 -
归并排序、快速排序、希尔排序分析与实现(Java)
目录归并排序基本思想算法实现快速排序基本思想算法实现希尔排序基本思想算法实现简单测试(JUnit)源码 归并排序 归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归...原创 2019-08-13 15:36:59 · 356 阅读 · 0 评论 -
基数排序、堆排序分析与实现(Java)
目录基数排序基本思想算法实现堆排序基本思想算法实现简单测试(JUnit)源码 基数排序 基数排序(Radix Sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort),顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而...原创 2019-08-13 15:40:26 · 165 阅读 · 0 评论