专栏首页封碎随机打乱一个数组的顺序 博客分类: 算法 算法ExchangeGo

随机打乱一个数组的顺序 博客分类: 算法 算法ExchangeGo

      把一个数组的顺序打乱,很常用的算法,比如洗牌。。

      代码如下:

import java.util.Random;

public class RandomSort {
	private Random random = new Random();
	//数组大小
	private static final int SIZE = 10;
	//要重排序的数组
	private int[] positions = new int[SIZE];
	
	public RandomSort() {
		for(int index=0; index<SIZE; index++) {
			//初始化数组,以下标为元素值
			positions[index] = index;
		}
		//顺序打印出数组的值
		dwn();
	}
	
	//重排序
	public void changePosition() {
		for(int index=SIZE-1; index>=0; index--) {
			//从0到index处之间随机取一个值,跟index处的元素交换
			exchange(random.nextInt(index+1), index);
		}
		dwn();
	}
	
	//交换位置
	private void exchange(int p1, int p2) {
		int temp = positions[p1];
		positions[p1] = positions[p2];
		positions[p2] = temp;
	}
	
	//打印数组的值
	private void dwn() {
		for(int index=0; index<SIZE; index++) {
			System.out.print(positions[index]+" ");			
		}
		System.out.println();
	}

	public static void main(String[] args) {
		RandomSort rs = new RandomSort();
		rs.changePosition();
		rs.changePosition();
		rs.changePosition();
	}
}

 不过由于随机数产生器产生的随机数不太随机,所以排序的结果页有很多相似的地方。换一个好的随机数产生器,会达到更好的效果,就能用于洗牌了,呵呵。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在微服务中启用分布式跟踪 | 微服务系列第十篇

    跟踪是一种用于监视软件的执行路径、以便进行调试或故障排除的专门的方法。您可能熟悉TRACE日志级别,其中包含有关每个方法调用的信息。跟踪微服务的目标类似于此级别...

    魏新宇
  • 程序员们,转变你的思维方式吧!

    笔者已经工作两年多了,在这里我想谈下关于程序员关于职业的思维方式。对于职业的思维方式,决定了一个人的选择和成就。建立一个正确的思维方式,有利于我们主动管理自己的...

    栋先生
  • 程序员你伤不起

    这本书以随笔的形式描述了作者的2005年至2011年的一些个人经历。主要是工作、生活当中的感悟,以及一些技术思想的分享。作者的文笔比较调侃和幽默,不需要花费很大...

    张子阳
  • 紧急通知:无论你英语多差,只要想学,看了此文必有改变!

    夜深了,Benson关了灯正准备上床休息,手机屏幕亮了,他拿起手机一看,是露露发来的短信:

    用户1907613
  • 非暴力沟通

    知道这本书是一次在和朋友跑步时听她提起,因为我有去京东上面看图书畅销榜的习惯,无意中又看到了这本书,朋友正好看完了,就借来读一下。

    张子阳
  • 转录因子(TF)的作用方式

    转录因子主要有3种作用方式调控基因表达: TF既可以结合在DNA临近的增强子也可以结合在启动子玉玉。和TF有关的基因转录既可以上调也可以下调,TF通过以下几个...

    Y大宽
  • 沟通学TCP握手,等于谋财害命

    TCP之所以有这个三次握手协议有很多历史原因。但是最主要的我认为是网络基础架构不稳定。因为不稳定,所以我们需要多次向对方表示或者等待对方反复确认“我爱你”...

    用户1564362
  • 聊聊架构

    这本书原本是发表在InfoQ上的专栏文章,原名叫做《架构漫谈》,因为反响良好,所以编撰成书。全书没有涉及过多的具体技术,更像是一些随笔。

    张子阳
  • 读《学习之道》— 深入理解拖延的习惯

    神经模型从频繁的练习中产生,他们自动联结形成组块,而组块和习惯有着密切的联系。习惯可以帮我们节省力气,它能为我们的大脑腾出空间进行别的活动。以倒车为例,开始时迎...

    Ewall
  • 想成为「不那么差」的程序员,离不开这个 buff

    一周前,我分享了篇文章《如何成为一位「不那么差」的程序员》,当时主要是从硬技能和软实力两方面分享经验,今天我想做一点补充:其实,做一名不那么差的程序员,也离不开...

    zhisheng

扫码关注云+社区

领取腾讯云代金券