Fisher-Yates乱序算法

乱序算法

public class Test07 {
	public static void main(String[] args) {
		//乱序算法
		int[] arr = {1,2,3,4,5,6,7,8};
		//逆序遍历 且这个随机的下标不能使要交换的元素的本身
		for(int i = arr.length-1;i>0;i--){
			//产生一个随机的下标与当前元素进行交换
			int index = (int)(Math.random()*i);
			arr[i] = arr[i] ^ arr[index];
			arr[index] = arr[i] ^ arr[index];
			arr[i] = arr[i] ^ arr[index];
		}
		System.out.println(Arrays.toString(arr));
	}
}

结果(随机):

 

你可能感兴趣的:(算法,排序算法,java)