洗牌演算法
阿新 • • 發佈:2020-12-30
package shuffle; import java.util.Arrays; import java.util.Random; /** * @Auther: zourong * @Date: 2020/12/30 12:15 * @Description: 亂序(洗牌)演算法 */ public class ShuffleAlgorithm { public static void main(String[] args) { int[] a={1,2,3,4,5,6,7,8}; shuffleMethod(a); System.out.println(Arrays.toString(a)); }private static void shuffleMethod(int[] a) { Random random = new Random();
int t; for (int i = a.length - 1; i >0 ; i--) { //取出(t<i && t>=0)隨機的一個下標t。 t=random.nextInt(i); //交換位置,第一個選出來的放到最後一個位置,第二個選出來的放到倒數第二個位置,以此類推。 int x=a[t]; a[t]=a[i]; a[i]=x; } } }
以上演算法可以保證每個元素必定不在原先的位置。
下面記錄一個草稿,提醒自己儘可能的簡化程式碼
--------------------------------------------------------------------