洗牌算法


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;
}

}
}
 

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

 

 

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

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

 

posted @ 2020-12-30 15:30  荒野猛兽  阅读(120)  评论(0编辑  收藏  举报