|
|
package class02;
|
|
|
|
|
|
public class Code03_Comp {
|
|
|
|
|
|
public static void selectionSort(int[] arr) {
|
|
|
if (arr == null || arr.length < 2) {
|
|
|
return;
|
|
|
}
|
|
|
for (int i = 0; i < arr.length - 1; i++) {
|
|
|
int minIndex = i;
|
|
|
for (int j = i + 1; j < arr.length; j++) {
|
|
|
if (arr[j] < arr[minIndex]) {
|
|
|
minIndex = j;
|
|
|
}
|
|
|
}
|
|
|
swap(arr, i, minIndex);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static void swap(int[] arr, int i, int j) {
|
|
|
int tmp = arr[i];
|
|
|
arr[i] = arr[j];
|
|
|
arr[j] = tmp;
|
|
|
}
|
|
|
|
|
|
public static void insertionSort(int[] arr) {
|
|
|
if (arr == null || arr.length < 2) {
|
|
|
return;
|
|
|
}
|
|
|
for (int i = 1; i < arr.length; i++) { // 0 ~ i 做到有序
|
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
|
swap(arr, j, j + 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 返回一个数组arr,arr长度[0,maxLen-1],arr中的每个值[0,maxValue-1]
|
|
|
public static int[] lenRandomValueRandom(int maxLen, int maxValue) {
|
|
|
int len = (int) (Math.random() * maxLen);
|
|
|
int[] ans = new int[len];
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
ans[i] = (int) (Math.random() * maxValue);
|
|
|
}
|
|
|
return ans;
|
|
|
}
|
|
|
|
|
|
public static int[] copyArray(int[] arr) {
|
|
|
int[] ans = new int[arr.length];
|
|
|
for (int i = 0; i < arr.length; i++) {
|
|
|
ans[i] = arr[i];
|
|
|
}
|
|
|
return ans;
|
|
|
}
|
|
|
|
|
|
// arr1和arr2一定等长
|
|
|
public static boolean isSorted(int[] arr) {
|
|
|
if (arr.length < 2) {
|
|
|
return true;
|
|
|
}
|
|
|
int max = arr[0];
|
|
|
for (int i = 1; i < arr.length; i++) {
|
|
|
if (max > arr[i]) {
|
|
|
return false;
|
|
|
}
|
|
|
max = Math.max(max, arr[i]);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
int maxLen = 5;
|
|
|
int maxValue = 1000;
|
|
|
int testTime = 10000;
|
|
|
for (int i = 0; i < testTime; i++) {
|
|
|
int[] arr1 = lenRandomValueRandom(maxLen, maxValue);
|
|
|
int[] tmp = copyArray(arr1);
|
|
|
selectionSort(arr1);
|
|
|
if (!isSorted(arr1)) {
|
|
|
for (int j = 0; j < tmp.length; j++) {
|
|
|
System.out.print(tmp[j] + " ");
|
|
|
}
|
|
|
System.out.println();
|
|
|
System.out.println("选择排序错了!");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|