菜鸟笔记
提升您的技术认知

JAVA洗牌算法

说明

每次从未处理的数据中随机取出一个数字,然后把该数字放在数组的尾部,即数组尾部存放的是已经处理过的数字。

代码

	public static void main(String[] args){
  
        Integer[] arr = {
  5,1,2,6,7,8,93,67,8,3,86,4,6,8,45,86};
        flushArr(arr);
        for(int num : arr){
  
            System.out.print(num + " ");
        }
    }

    public static void flushArr(Integer[] arr){
  
        int length = arr.length;

        int index = length - 1;

        for(int i = 0; i < length && index > 0 ; i++){
  
            int num = createRandom(index);
            int temp = arr[num];
            arr[num] = arr[index];
            arr[index] = temp;
            index--;
        }
    }

    public static int createRandom(int end){
  
        return (new Random().nextInt(end));
    }