对数器

写完算法需要大量测试,需要生成测试数据和测试自己的算法是否正确,一个对数器至少需要三个功能,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 }
对数器

 

posted @ 2019-11-11 13:58  懒人写博客  阅读(840)  评论(0编辑  收藏  举报