
Algorithm(算法)
冰冻火山
https://github.com/jelly-liu
展开
-
图 深度优先遍历 广度优先遍历 非递归遍历 图解算法过程
图 深度优先遍历 广度优先遍历 图解算法过程原创 2014-01-06 18:12:59 · 28396 阅读 · 1 评论 -
基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制也叫过载保护
基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制Congestion Control Algorithm参考以下文章:http://www.javaranger.com/archives/1769https://www.kullabs.com/classes/subjects/units/lessons/notes/note-detai原创 2017-06-06 14:23:59 · 7166 阅读 · 0 评论 -
关于计时器定时器的设计 时间轮的高效实现 linux hashed Hierarchical timing wheel
关于时间轮的设计 linux hashed Hierarchical timing wheel 异步定时任务执行器原创 2017-01-18 18:15:16 · 2941 阅读 · 0 评论 -
堆排序,大顶堆,小顶堆
代码如下,有详细的注视package com.collonn.algorithm.sort;/** * * 堆排序基本步骤,假设没有重复的元素 * 空间:为O(1) * 时间:N*logN * * 步骤1:构建大顶堆(或小顶堆) * 步骤2:将 堆顶 元素 与 未排序 的最后一个叶子,进行交换 * 步骤3:并对半堆进行修正(不考虑已有序的叶子) * 步骤原创 2014-02-10 15:50:27 · 23634 阅读 · 4 评论 -
AVL树的旋转操作 图解 最详细
AVL树的旋转操作 图解 最详细各大教课书上讲的都是左旋与右旋,其实这样很容易理解错误,我们换一种叫法。我们称呼左旋为:逆进针旋转。我们称呼右旋为:顺进针旋转。原创 2014-02-28 11:47:18 · 56121 阅读 · 25 评论 -
关于求树中每层的节点总数
关于求树中每层的节点总数方案1:基于树的深度优先遍历,进行递归。方案2:基于树的深度优先遍历,进行迭代。方案3:基于树的广度优先遍历,进行迭代。代码如下,附带详细注释:package com.collonn.algorithm.tree;import java.util.HashMap;import java.util.HashSet;import java.util.原创 2014-03-04 14:10:52 · 7583 阅读 · 1 评论 -
希尔排序
希尔排序基本步骤步骤一:选择适当步长(碰到偶数,则加1变成奇数,以减少相同下标的元素进行重复比较),进行分组。步骤二:分另对各分分组进行插入排序。重复步骤一。步骤三:步长依次减半,当步长为1时,且已进行过插入排序后,数组已有序。老规矩,直接上图。代码如下:package com.collonn.algorithm.sort;/** * SHEL原创 2014-02-24 11:27:37 · 4009 阅读 · 0 评论 -
迷宫求解
有了解题思路,对于一般性的算法题,只要动脑子想想关键点的实现方法,基本上都能写出来。而剩余的工作就是到网上搜搜,是否有其它解决方法,对自己的思维也是一个锻炼。1:借助栈,深度遍历思想。2:当访问某点时,可能会遇到哪些不同的情况,以及针对不同情况的不同处理方案,比如死胡同,环路问题,遇到终点等。3:如果依次访问某点的,正上,正右,正下,正左,四个邻接点。迷宫求解的基本原创 2014-02-21 11:28:41 · 2198 阅读 · 0 评论 -
将二叉树在控制台按树形打印
将二叉树在控制台按树形打印原创 2014-01-20 01:03:35 · 7779 阅读 · 0 评论 -
二叉查找树的实现(BST)
二叉查找树(BST树)原创 2014-01-24 12:44:33 · 6990 阅读 · 3 评论 -
归并排序 图解算法过程
归并排序,图解,详细过程。时间增长度,O(N*lgN),对于每一层,是将2个有序数组合并成一个有序数组,时间复杂度为O(N),一共lgN层。代码如下:package com.collonn.algorithm.sort;/** * <pre> * 经典归并排序 * </pre> */public class MergeSort { public void ...原创 2013-12-26 14:09:54 · 13906 阅读 · 7 评论 -
快速排序 图解算法过程 另一种方法 大同小异
原创博文,转载请注明出处。右键,查看图片,看大图。快速排序基本步骤步骤一:划分 (1)选择数组的尾元素做为支点,支点选择方案有很多。 (2)把>=支点的元素放到右边。 (3)把 (4)将支点放到正确的位置。步骤二:递归 对支点左右两边的子数组再分别调用步骤一,直到子数组长度为1。原创 2014-01-05 17:29:33 · 2184 阅读 · 0 评论 -
快速排序 图解算法过程
步骤一:划分 (1)选择数组的尾元素做为支点,支点选择方案有很多。 (2)把>=支点的元素放到右边。 (3)把<=支点的元素放到左边。 (4)将支点放到正确的位置。步骤二:递归 对支点左右两边的子数组再分别调用步骤一,直到子数组长度为1。原创 2013-12-28 12:47:34 · 12351 阅读 · 2 评论 -
Dijkstra算法-(迪杰斯特拉)算法的迭代实现与优先队列实现 图解算法过程
Dijkstra算法-(迪杰斯特拉)算法之迭代实现 Dijkstra算法-(迪杰斯特拉)算法之优先队列实现原创 2014-01-11 23:51:16 · 15209 阅读 · 4 评论 -
求无向无权图起点到终点的所有路径
求无向无权图起点到终点的所有路径基本思路:基于图的深度优先遍历进行修改。0:初始栈中只有起点元素。1:如果栈为空,则返回,否则,访问栈顶节点,但先不删除栈顶元素。2:如果该元素的邻接点(1)是终点,则打印路径。(2)在栈中已存在,则是环路,不处理。(2)正常,则将该邻接点入栈,继续步骤1示例图如下:代码如下:package原创 2014-01-13 15:43:46 · 7667 阅读 · 0 评论 -
无权无向图之最少边路径
无权无向图寻找这样的路径:从起点到终点所经过的边最少基于广度优先算法实现与图相关的例子大都是如下:代码如下:package com.collonn.algorithm.grf;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;/** * 无权无向图原创 2014-01-13 10:15:18 · 3107 阅读 · 0 评论 -
各种排序时间复杂度和空间复杂度
转载 2018-03-29 14:07:34 · 5704 阅读 · 1 评论