对数器
写完算法需要大量测试,需要生成测试数据和测试自己的算法是否正确,一个对数器至少需要三个功能,1.生成大量测试数据,2.找一个绝对正确的算法,3.测试
代码如下:
1 package com.sort.demo; 2 3 import java.lang.reflect.Array; 4 import java.util.Arrays; 5 import java.util.Random; 6 7 public class Test { 8 9 /** 10 *随机数值发生器 11 * @param size 最大长度 12 * @param value 最大值 13 * @return 14 */ 15 public static int[] generateRandomArray(int size,int value){ 16 int[] arr=new int[(int)((size+1)*Math.random())]; 17 for (int i=0;i<arr.length;i++){ 18 arr[i]=(int)((int)(value+1)*Math.random()-(int)(value+1)*Math.random()); 19 } 20 return arr; 21 } 22 23 /** 24 * 绝对正确的方法 25 * @param arr 26 */ 27 public static void rightMethod(int[] arr){ 28 Arrays.sort(arr); 29 } 30 31 public static int[] copyArr(int[] arr){ 32 int[] arr1=new int[arr.length]; 33 for(int i=0;i<arr.length;i++){ 34 arr1[i]=arr[i]; 35 } 36 return arr1; 37 } 38 39 public static void test(Sort sort){ 40 int test=500000; 41 int size=10; 42 int value=100; 43 for (int i=0;i<test;i++){ 44 int[] arr1 = generateRandomArray(size, value); 45 int[] arr2=copyArr(arr1); 46 int[] arr3=copyArr(arr1); 47 sort.sort(arr2); 48 rightMethod(arr3); 49 for(int j=0;j<arr2.length;j++){ 50 if (arr2[j]!=arr3[j]){ 51 for(int k=0;k<arr1.length;k++){ 52 System.out.print(arr1[k]+"\t"); 53 if (k==arr1.length-1){ 54 System.out.println(); 55 } 56 } 57 break; 58 } 59 } 60 } 61 62 } 63 64 }