算法的研究
柳暗花明_攻城师
与广大程序员、技术人员、专家交流,致力于专业能力有效快速提升。
展开
-
插入排序的理解
—– 插入排序 —– 插入排序原理:将数组中的每一个元素与第一个元素相比较!如果这个元素小于第一个元素,则交换这两个元素,然后循环这条规则。 如图: 从图中可以看到,我们可以把过程理解为将从数组第二个数开始(先把这个数定为要插入的数)依次与前面的数相比较,如果后面的数小,则交换位置,直到换到不必它前面的数小为止(就将要插入的数付给最后依次比数的位置)。 int转载 2018-02-03 12:41:53 · 161 阅读 · 0 评论 -
经典算法--约瑟夫环问题
约瑟夫环问题,这是一个很经典算法,处理的关键是:伪链表 问题描述:N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号) 在数据结构与算法书上,这个是用链表解决的。我感觉链表使用起来很麻烦,并且这个用链表处理起来也不是最佳的。 我画了一个图用来理解: 有如下问题需要首先考虑: 1、“圈”...转载 2019-02-28 17:31:41 · 899 阅读 · 0 评论 -
背包问题
背包问题很有意思,同时也富有挑战性。首先看一下这个问题的完整描述: 问题 假定背包的最大容量为W,N件物品,每件物品都有自己的价值和重量,将物品放入背包中使得背包内物品的总价值最大。 背包问题wiki 可以想象这样一个场景——小偷在屋子里偷东西,他带着一只背包。屋子里物品数量有限——每件物品都具有一定的重量和价值——珠宝重量轻但价值高,桌子重但价值低。最重要的是小偷背包容量有限。很明显...转载 2019-02-28 17:10:39 · 152 阅读 · 0 评论 -
归并排序
归并排序采用的是分治(divide-and-conquer)法思想。 (1)基本思想:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。 (2)执行过程: (3)算法思路: (4)Java代码实现如下: public class Main { public static void ...转载 2019-02-28 17:08:07 · 108 阅读 · 0 评论 -
希尔排序的分析
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 希尔排序过程 希尔排序的基本...转载 2019-02-28 16:47:23 · 226 阅读 · 0 评论 -
快速排序
假设我们现在对“612 79345 108”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列。 312 546...转载 2019-02-28 10:54:46 · 117 阅读 · 0 评论 -
一致性哈希算法的原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,...转载 2018-03-05 21:15:14 · 333 阅读 · 0 评论 -
zookeeper和dubbo的关系
Dubbo建议使用Zookeeper作为服务的注册中心。1. Zookeeper的作用: zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。zook...转载 2018-03-07 09:50:59 · 132 阅读 · 0 评论 -
快速排序的理解
高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列转载 2018-02-03 11:36:01 · 171 阅读 · 0 评论 -
五大常用算法:分治、动态规划、贪心、回溯和分支界定
算法系列之十六:使用穷举法解猜结果游戏--http://blog.csdn.net/orbit/article/details/7607685 ---------------例子: 麻将PC上发送操作命令: 代码逻辑no ,穷举出所有的 一、引言 穷举是解决问题的一种常用思路,当对一个问题无从下手的时候,可以考虑在问题域允许的范围内将所有可能的结果穷举出来,然...转载 2019-03-01 11:37:19 · 235 阅读 · 0 评论