zoukankan      html  css  js  c++  java
  • 洗牌算法

    
    
    package shuffle;

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

    /**
    * @Auther:
    * @Date: 2020/12/30 12:15
    * @Description: 乱序(洗牌)算法
    */
    public class ShuffleAlgorithm {
    public static void main(String[] args) {
    int[] arr={1,2,3,4,5,6,7,8};
    shuffleMethod(arr);
    System.out.println(Arrays.toString(arr));
    }

    private static void shuffleMethod(int[] arr) {
    Random random = new Random();
    int temp;
    for (int i = arr.length - 1; i >0 ; i--) {
    //取出(temp<i && temp>=0)随机的一个下标temp。
    temp=random.nextInt(i);
    //交换位置,第一个选出来的放到最后一个位置,第二个选出来的放到倒数第二个位置,以此类推。
    int x=arr[temp];
    arr[temp]=arr[i];
    arr[i]=x;
    }

    }
    }
     

    以上算法可以保证每个元素必定不在原先的位置。

    下面记录一个草稿,提醒自己尽可能的简化代码

    --------------------------------------------------------------------

  • 相关阅读:
    leetcode-剑指10-OK
    leetcode-剑指22-OK
    vue组件引入
    vue项目单页
    vue-cli脚手架创建vue项目
    vue生命周期
    ES6 DEMO
    ES6
    记录一个天坑
    CentOS 7防火墙快速开放端口配置方法
  • 原文地址:https://www.cnblogs.com/zou-rong/p/14211681.html
Copyright © 2011-2022 走看看