![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构/算法
文章平均质量分 81
奋斗吧_攻城狮
JUST DO IT!
展开
-
一致性Hash算法背景
一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性hash时采用如下步骤:首先求出转载 2021-08-14 09:56:03 · 146 阅读 · 0 评论 -
排序算法——归并排序与快速排序
首先,二者都运用了递归和分治的两种重要思想。在这里递归就不做详细介绍。分治:顾名思义,分而治之,这是在排序中我们非常常见的一种思想,同时也是在其他场景乃至日常生活的优秀解题方法。当我们遇到一个大的难题无从下手时,我们往往都会将其分成几个小块,当我们处理好每个小模块问题后,将其合并,大的问题便能够的以解决。同样,在我们处理排序问题时,也能充分利用分治思想来提高性能。那么我们先来总结归并排序归并排序归并排序的思想其实很简单,总共分为两步,分与治。当我们面对一个很大的数组时,用以往学过的冒泡,插入,选转载 2021-04-25 00:06:45 · 568 阅读 · 0 评论 -
树的深度和广度优先遍历
深度优先遍历深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。如下树的深度优先遍历结果为:A B D E C F G * A * /转载 2021-04-15 15:39:51 · 147 阅读 · 0 评论 -
堆
何为堆?堆是一种特殊的树,只要满足下面两个条件,它就是一个堆:(1)堆是一颗完全二叉树;(2)堆中某个节点的值总是不大于(或不小于)其父节点的值。其中,我们把根节点最大的堆叫做大顶堆,根节点最小的堆叫做小顶堆。堆详解满二叉树满二叉树是指所有层都达到最大节点数的二叉树。比如,下面这颗树:完全二叉树完全二叉树是指除了最后一层其它层都达到最大节点数,且最后一层节点都靠左排列。比如,下面这颗树:可见,其实满二叉树是一种特殊的完全二叉树。那么,使用什么结构存储完全二转载 2020-07-23 09:43:12 · 148 阅读 · 0 评论 -
跳表
何为跳表?跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。跳表详解有序链表考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍历链表,直到查找到元素为止。上述这个链表是有序的,但是不能使用二分查找,是不是很捉急?(P.S.数组可以实现二分查找)那么,有没有什么方法可以实现有序链表的二分查找呢?答案是肯定的,那转载 2020-07-23 09:29:37 · 96 阅读 · 0 评论 -
那些惊艳的算法们(三)—— 时间轮
从定时任务说起自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。大概很少有人想过,这些“定时”是怎样做到的。当然,计算机领域的同学们可能对此比较熟悉,毕竟工作中的定时任务也是无处不在的:每天凌晨更新一波数据库,每天9点发一波邮件,每隔10秒钟抢一次火车票。。。至于怎么实现的?很简单啊,操作系统的crontab,spring框架的quartz,实在不行Java自带的Schedul转载 2020-07-13 16:40:44 · 315 阅读 · 0 评论 -
算法TopK问题
原创:58沈剑架构师之路1周前前言:本文将介绍随机选择,分治法,减治法的思想,以及TopK问题优化的来龙去脉,原理与细节,保证有收获。面试中,TopK,是问得比较多的几个问题之一,到底有几种方法,这些方案里蕴含的优化思路究竟是怎么样的,今天和大家聊一聊。画外音:除非校招,我在面试过程中从不问TopK这个问题,默认大家都知道。问题描述:从arr[1, n]这n个数中,找...转载 2018-09-28 08:36:21 · 1252 阅读 · 0 评论 -
大数四则运算
一、说三道四 用代码实现简单的加减乘除运算会不会?只要你是个coder,我想这个答案都是肯定的吧!但是,今天我想说的是,当我们的运算遇到了大数,用原本的int、long、float、double数值类型都无法表示出来的时候,你们想过该如果解决这一类型的问题了吗? 在这,你们可以先不用看卤煮撸的代码,想想如果自己遇到这个问题,该如果解决,也许你的想法很新颖,思路以及在算法的实现上更清晰。希望能...转载 2018-02-27 20:31:30 · 384 阅读 · 0 评论 -
排序-快速排序
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列转载 2017-10-28 11:45:23 · 329 阅读 · 0 评论