package com.zys;
import java.util.*;
public class Solution {
//对数组进行排序,使用冒泡排序法,并增加随机性,使得数组乱序输出
public static void sort(int[] arr) {
System.out.print("排序前:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t" + arr[i] );
}
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.print("\n排序后:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t" + arr[i] );
}
System.out.println("\n乱序后:");
int out = 0;
int outIndex = 0;
boolean diff = true;
Random ran = new Random();
List<Integer> list = new ArrayList<Integer>();
for (int i : arr) {
list.add(i);
}
for (int i = 0; i < arr.length; i++) {
//ran.nextInt()是生成一个随机的int值,该值介于[0,list.size())的区间
outIndex = ran.nextInt(list.size());
out = list.get(outIndex);
//避免了随机出相同的数组下标,从而实现整个数组无重复的乱序输出
list.remove(outIndex);
System.out.print(out + "\t");
}
}
public static void main(String[] args) {
int[] arr = {3, 8, 11, 42, 6, 13, 7, 43, 17, 2, 14, 65};
sort(arr);
}
}
输出结果:
假如有乱序输出次数条件,则:
public static void sort(int[] arr) {
System.out.print("排序前:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t" + arr[i] );
}
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.print("\n排序后:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t" + arr[i] );
}
System.out.println("\n乱序后:");
int out = 0;
int outIndex = 0;
boolean diff = true;
Random ran = new Random();
List<Integer> list = new ArrayList<Integer>();
for (int i : arr) {
list.add(i);
}
//假如乱序3次
for(int i=0;i<3;i++){
Collections.shuffle(list);
list.toArray();
System.out.println(i+1+":"+list);
}
}
输出结果: