使用Java中Arrays自带的API(sort方法)对数字进行排序后,再讲排序后的结构与选择排序后的结果,比较,输出对数结果;
import java.util.Arrays;
public class RandomTest {
public static void main(String[] args) {
int maxSize = 100;
int maxValue = 100;
int testTime = 500000;
boolean flag = true;
for(int i=0; i<testTime; i++) {
int[] arr = generateRandomArray(maxSize, maxValue);
int[] copyArray = copyArray(arr);
SelectionSort(arr);
comparator(copyArray);
if(!isEqual(arr, copyArray)) {
flag = false;
printArray(arr);
printArray(copyArray);
break;
}
}
System.out.println(flag ? "success" : "Fucked up");
}
public static int[] generateRandomArray(int maxSize, int maxValue) {
int[] arr= new int[(int)((maxSize + 1) * Math.random())];
/*数组的长度随机
* */
for (int i=0; i<arr.length; i++) {
arr[i] = (int)(Math.random() * (maxValue + 1)) - (int)(Math.random() * (maxValue + 1));
}
/*数组中每一个元素都是一个随机值减去另一个随机值
*maxValue加一的原因是,Math.random()*N所取到的是[0, N-1],如果要取[0, N]就要(*N+1);
* */
return arr;
}
public static int[] copyArray(int[] arr) {
if (arr == null) {
return null;
}
int[] copyArray = new int[arr.length];
for (int i=0; i<copyArray.length; i++) {
copyArray[i] = arr[i];
}
return copyArray;
}
public static void comparator(int[] arr) {
Arrays.sort(arr);
}
public static boolean isEqual(int[] arr1, int[] arr2) {
if(arr1==null && arr2==null) {
return true;
}
if((arr1==null && arr2!=null)||(arr1!=null && arr2==null)) {
return false;
}
if(arr1.length != arr2.length) {
return false;
}
for(int i=0; i<arr1.length; i++) {
if(arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
public static void SelectionSort(int[] arr) {
if(arr==null || arr.length<2) {
return;
}
for(int i=0; i<arr.length; i++) {
int minIndex = i;
for(int j=i+1; j<arr.length; j++) {
minIndex = arr[j]<arr[minIndex]?j:minIndex;
}
swap(arr, i, minIndex);
}
}
public static void swap(int[] arr, int j, int minIndex) {
int temp = arr[j];
arr[j] = arr[minIndex];
arr[minIndex] = temp;
}
public static void printArray(int[] arr) {
for(int i=0; i<arr.length; i++) {
if(i == arr.length) {
System.out.println(arr[i]);
}else {
System.out.println(arr[i]+",");
}
}
}
}