java 算法--洗牌算法

22 篇文章 0 订阅

方法(一)


public class Xipaisuanfa {

/**

* @param args

*/

// 数组大小

static Random random =new Random();

private int[] positions = { 1, 2, 3, 4, 5, 6, 9, 7, 8, 0 };

public Xipaisuanfa() {


}


// 重排序

public void changePosition() {

//使用for循环的目的是使得输出的数更加无序

for (int index = positions.length - 2; index >= 0; index--) {

// 从0到index处之间随机取一个值,跟index处的元素交换

exchange(random.nextInt(index+1), index);


}

System.out.println();

printPositions();

}


// 交换位置

private void exchange(int m, int n) {

int temp = positions[m];

positions[m] = positions[n];

positions[n] = temp;

}


// 依次打印数组的值

private void printPositions() {

for (int index = 0; index < positions.length; index++) {

System.out.print(positions[index] + " ");

}

System.out.println();

}


public static void main(String[] args) {

Xipaisuanfa rs = new Xipaisuanfa();

rs.changePosition();

rs.changePosition();

}

}


方法(二)

public class Xipaisuanfa {


/**

* @param args

*/


// 数组大小

private static int[] positions = { 1, 2, 3, 4, 5, 6, 9, 7, 8, 0 };


public static void main(String[] args) {

changePosition();

}


// 重排序

public static void changePosition() {

//使用for循环的目的是使得输出的数更加无序

for (int index = positions.length - 1; index >= 0; index--) {

// 从0到index处之间随机取一个值,跟index处的元素交换

int t = (int) (Math.random() * 9);

exchange(t + 1, t);

}

printPositions();

}


// 交换位置

private static void exchange(int m, int n) {

int temp = positions[m];

positions[m] = positions[n];

positions[n] = temp;

}


// 依次打印数组的值

private static void printPositions() {

for (int index = 0; index < positions.length; index++) {

System.out.print(positions[index] + " ");

}

System.out.println();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值