算法(一)之洗牌算法
2015-12-05 23:46
148 查看
洗牌算法是我们常见的随机问题,在玩游戏、随机排序时经常会碰到,一个最常用的地方就是组卷。它可以抽象成这样:M以内的所有自然数的随机顺序数组。
简单的实现一下,有什么问题大家来指正。
package com.math; import java.util.Random; /** * @author summer * */ public class Shuffle { static final int[] a = new int[54]; static Random rnd = new Random(); static{ for(int i=1;i<55;i++) a[i-1] = i; } static void swap(int[] arr,int i,int j){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } public static void shuffle(){ for (int i=a.length; i>1; i--) swap(a, i-1, rnd.nextInt(i)); } public static void main(String[]args){ shuffle(); for(int i:a){ System.out.println(i); } } }
简单的实现一下,有什么问题大家来指正。
相关文章推荐
- cgi中的环境变量
- C++与Java
- 55-懒省事的小明
- 你真的说的清楚ArrayList和LinkedList的区别吗
- Solr5.0源码分析-SolrDispatchFilter
- 我面试电商行业的经历-负载均衡
- linux之wc命令
- Google Play 2015年度最佳游戏与应用公布
- Google Play 2015年度最佳游戏与应用公布
- 如何解决SSH连接Linux超时自动断开?
- PHP如何连接MySQL数据库
- input子系统 事件流程浅析
- lijhtoj Ekka Dokka 1116 (简单数学题)
- 数据结构上机测试4.1:二叉树的遍历与应用1
- 上班那些事儿之七月
- Struts2如何封装请求参数
- JavaScript闭包
- Struts1 标签库 说明
- SwipeRefreshLayout 和RecyclerView 使用
- Exchange2013灾难恢复演练--Exchange管理员必须掌握的技能