算法
Neil Parker
有人的地方就有江湖
展开
-
判断链表是否有环的算法
第一步,找环中相汇点。分别用p1,p2指向链表头部,p1每次走一步,p2每次走二步,直到p1==p2找到在环中的相汇点。第二步,找环的入口。接上步,当p1==p2时,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p2比p1多走一圈有2x=n+x; n=x;可以看出p1实际走了一个环的步数,再让p2指向链表头部,p1位置不变,p1,p2每次走一步直到p1==p2; 此时p1指向环的...原创 2018-05-10 14:36:31 · 315 阅读 · 0 评论 -
二进制十进制转换算法
2进制转10进制,10进制转2进制 //2进制转10进制: 按权相加 public static double binary2decimal(String binaryStr) { String[] binaryArr = binaryStr.split("\\."); String integer = binaryArr[0];// 整数部分 ...原创 2018-05-08 15:45:31 · 936 阅读 · 0 评论 -
一致性HASH算法
一致性HASH算法在分布式缓存系统中,需要将数据均匀的分布到缓存服务器集群的不同机器上,就需要使用对缓存的数据的key做hash值计算, 然后在将hash值除以服务器节点的数量取模计算出数据需要落到那台服务器节点上。这种算法很简单,也可以实现数据的均匀分布, 但是,增加或者减少数据节点的时候会导致所有缓存数据失效。传统的取模方式例如10条数据,3个节点,如果按照取模的方式,那就是node a: 0...原创 2018-05-07 20:36:43 · 1669 阅读 · 0 评论 -
排序算法动图演示
1.冒泡排序代码 /** *1 冒泡排序 * 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。 * 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 * 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 1.1 算法描述 ...原创 2019-05-19 23:02:54 · 610 阅读 · 1 评论