java算法——自建对数器
用于验证所写算法是否正确,与java自带的函数方法进行比较,例如写一个排序算法,验证排序算法是否正确,采用Arrays.sort(arr) 的方式,与自己所写的算法进行比对,经过多轮(比较大的一个轮次)比对如果结果都一致,则说明所写算法正确,反之则有问题。
package class01; import java.util.Arrays; /* /对数器 */ public class Code_logmachine { 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;j<arr.length;j++){ minindex= arr[j]<arr[minindex]?j:minindex; } swap(arr,i,minindex); } } public static void comparator(int[] arr){ Arrays.sort(arr); } public static void swap(int[] arr,int i,int j){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } 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) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random()); } return 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 boolean isEqual(int[] arr1, int[] arr2) { for(int i=0;i<arr1.length;i++){ if(arr1[i]!=arr2[i]) return false; } return true; } public static void main(String[] args) { int testtime=5000000; 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; break; } } System.out.println(succeed?"Nice!" :"xxxxx"); int arr[] =generateRandomArray(maxsize,maxvalue); } }