标签:maxsize ack swa nic void ati array div selection
package arithmetic; import java.util.ArrayList; import java.util.Arrays; /** * @author hailu */ public class SelectionSort { public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } /* * 0 ~ n-1 * 1 ~ n-1 * 2 ~ n-1 * ...~ n-1 * */ // i ~ N-1 for (int i = 0; i < arr.length - 1; i++) { // 最小值在哪个位置上 i~n-1 int minIndex = i; // i ~ N-1 上找最小值的下标 for (int j = i + 1; j < arr.length; j++) { minIndex = arr[j] < arr[minIndex] ? j : minIndex; } swap(arr, i, minIndex); } } public static void main(String[] args) { // int[] arr = new int[]{5, 3, 4, 1, 2}; // selectionSort(arr); // printArray(arr); int testTime=500000; int maxSize=100; int maxValue=100; boolean succeed=true; for (int i=0;i<testTime;i++){ int[] arr1 = generateRandomArray(maxSize, maxValue); int[] arr2 = copyArray(arr1); selectionSort(arr1); comparator(arr2); if (!isEqual(arr1,arr2)){ succeed=false; printArray(arr1); printArray(arr2); break; } } System.out.println(succeed ? "Nice!" : "Fucking fucked!"); int[] arr = generateRandomArray(maxSize, maxValue); printArray(arr); selectionSort(arr); printArray(arr); } public static boolean isEqual(int[]arr1,int[] arr2){ if ((arr1==null&&arr2!=null)||(arr1!=null&&arr2==null)){ return false; } if (arr1==null&&arr2==null){ return true; } for(int i=0;i<arr1.length;i++){ if (arr1[i] != arr2[i]) { return false; } } return true; } public static int[] generateRandomArray(int maxSize,int maxValue){ /* * Math.random() [0,1) * Math.random()*N [0,N) * (int)(Math.random()*N) [0,N-1] * */ int[] arr=new int[(int)((maxSize+1)*Math.random())]; for (int i=0;i<arr.length;i++){ // [-? , +?] arr[i]=(int)((maxValue+1)*Math.random())-(int)(maxValue*Math.random()); } return arr; } public static void comparator(int[]arr){ Arrays.sort(arr); } public static int[] copyArray(int[]arr){ if (arr==null){ return null; } int[]res=new int[arr.length]; for (int i=0;i<arr.length;i++){ res[i]=arr[i]; } return res; } public static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void printArray(int[] arr) { if (arr == null) { return; } for (int i = 0; i < arr.length; i++) { System.out.println(arr[i] + " "); } System.out.println(); } }
标签:maxsize ack swa nic void ati array div selection
原文地址:https://www.cnblogs.com/yanghailu/p/12772148.html