package class01; import java.util.Arrays; /** * 选择排序 * 概述:n个数,n次循环(10个数就是10次循环),每次循环找出本轮的最小值,和本轮的第一个位置的数,交换。周而复始。直至该乱序数组有序。 */ public class Code01_SelectionSort { public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int i = 0; i < N - 1; i++) { int minIndex = i; for (int j = i + 1; j < N; j++) { minIndex = arr[j] < arr[minIndex] ? j : minIndex; } swap(arr, i, minIndex); } } public static void main(String[] args) { int testTimes = 10; int maxSize = 15; int maxValue = 100; boolean flag = true; for (int i = 0; i < testTimes; i++) { int[] arr = generateRandomArr(maxSize, maxValue); int[] arr1 = copyArr(arr); int[] arr2 = copyArr(arr); Arrays.sort(arr1); selectionSort(arr2); // printArr(arr); // printArr(arr1); // printArr(arr2); flag = isEquals(arr1, arr2); if (!flag) { printArr(arr); printArr(arr1); printArr(arr2); break; } } System.out.println(flag ? "Nice!" : "Fucking fucked!"); int[] arr = generateRandomArr(maxSize, maxValue); printArr(arr); selectionSort(arr); printArr(arr); } public static boolean isEquals(int[] arr1, int[] arr2) { boolean flag = true; for (int i = 0; i < arr1.length; i++) { if (arr1[i] != arr2[i]) { flag = false; break; } } return flag; } public static int[] copyArr(int[] arr) { int[] arr2 = new int[arr.length]; int N = arr.length; for (int i = 0; i < N; i++) { arr2[i] = arr[i]; } return arr2; } //生成一个长度随机,元素的值也随机的数组。 public static int[] generateRandomArr(int maxSize, int maxValue) { //Math.random(): [0, 1)上的所有小数,等概率返回一个。 //Math.random() * N:[0, N)上的所有小数,等概率返回一个。 //(int) Math.random() * N:[0, N)上的所有整数,等概率返回一个。 int[] arr = new int[(int) (Math.random() * maxSize)]; for (int i = 0; i < arr.length; i++) { arr[i] = (int) (Math.random() * maxValue) - (int) (Math.random() * maxValue); } return arr; } public static void printArr(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } private static void swap(int[] arr, int i, int j) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } }
标签:arr,int,printArr,选择,static,arr2,arr1,排序 From: https://www.cnblogs.com/TheFloorIsNotTooHot/p/16838554.html