
算法
lxgwm2008
软件工程师 Engineer
展开
-
桶式排序
桶式排序是一种常见的排序方法,其定义如下: 如果我们有N个整数,范围从1到M(或从0到M-1),我们可以利用这个信息得到一种快速的排序,叫做桶式排序(bucket sort)。我们留置一个数组,称之为Count,大小为M,并初始化为零。于是,Count有M个单元(或桶),开始时他们都是空的。当数组元素A[i]被读入时Count[A[i]]增1。在所有的输入被读进以后,扫描数组Count,打印输出原创 2013-03-29 13:22:16 · 1095 阅读 · 0 评论 -
排列组合之01法的演变
关于排列组合,一种常见的非递归算法是"01交换法",其过程是这样的: 使用0或1表示集合中的元素是否出现在选出的集合中,因此一个0/1列表即可表示选出哪些元素。 例如:[1 2 3 4 5],选出的元素是[1 2 3]那么列表就是[1 1 1 0 0]。过程如下: comb(set, n, k) { (1) 从左到右扫描0/1列表,如果遇到“10”组合,就将它转换为”01”.原创 2013-03-22 14:06:40 · 2001 阅读 · 0 评论 -
Horner Rule(霍纳法则)
package com.lxg.hornerrule; public class HornerRule { public static double hornerRule(final double[] a, double x) { if (null == a || a.length == 0) { throw new IllegalArgumentException("a is nu原创 2013-03-28 10:06:44 · 1227 阅读 · 0 评论 -
一致性哈希算法及其在分布式系统中的应用
摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。 分布式缓存问题 假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读转载 2013-05-20 15:11:46 · 654 阅读 · 0 评论 -
快排之标准实现
public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] array = new int[] {2, 3, 1, 5, 4}; quickSort(array, 0, array.len原创 2013-05-09 17:46:01 · 951 阅读 · 0 评论 -
有限状态机(FSM)的设计与实现(1)
转自:http://www.cnblogs.com/chencheng/archive/2012/06/25/2562660.html 有限状态机(FSM)是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用。通常FSM包含几个要素:状态的管理、状态的监控、状态的触发、状态触发后引发的动作。本文主要阐述一下状态机的几种设计方法。 1:switch cas转载 2013-06-28 11:26:24 · 1471 阅读 · 0 评论 -
有限状态机(FSM)的设计与实现(二)
转自:http://www.cnblogs.com/chencheng/archive/2012/06/28/2564336.html 分层状态机的设计: 对于状态较多的状态机,通常的设计会维护一个庞大的二维矩阵,所有状态耦合在一起,这往往导致维护困难,由于可能存在许多公共的特性,也会导致许多状态具有相同的处理函数。针对这些问题我们可以通过设计分层状态机来解决,主要的思想就是根据不同的转载 2013-06-28 11:28:06 · 1286 阅读 · 0 评论