编程世界java开发进阶程序员

洗牌算法

2017-09-12  本文已影响63人  Frank_Kivi

问题

实现一个最简单的洗牌算法。

分析

很多人第一次都可能会很迷惑,其实只要理解好了这个题目,实现起来相信并不难。
我们需要明确几点:
1,洗牌并不是说要保证他们不连号。
2,可以简单认为有54张牌即可,不需要去区分花色数字等。
3,随机打乱他们的顺序即可。
4,尽量不使用系统方法和多余的空间。

代码

import java.util.Arrays;
import java.util.Random;

public class ShuffleCards {
    public static void main(String[] args) {
        int[] cards = new int[54];
        for (int i = 0; i < cards.length; i++) {
            cards[i] = i;
        }
        System.out.println(Arrays.toString(cards));
        Random random = new Random();
        for (int i = cards.length - 1; i >= 1; i--) {
            int nextInt = random.nextInt(i);
            int temp = cards[i];
            cards[i] = cards[nextInt];
            cards[nextInt] = temp;
        }
        System.out.println(Arrays.toString(cards));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读