写了一个算法,我怎么验证我的算法对不对呢?写个小程序测试一下。这就是对数器。
过程基本就是四步:
1.设定测试次数
2.测试输入:2.1产生随机数组 数值范围 数值个数范围
2.2copy出来一份,内存地址不一样,但是数值内容一样。
3.被测黑盒
3.1我写的函数
3.2系统提供的方法或者叫绝对正确的方法
4..结果验证:对比两个结果
5.JAVA 随机数
static void main()
{
int testTime=2000;//测试次数
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;
}
}
}
JAVA生成随机数的函数:
//随机数组的生成
//Math.random() [0,1) double
//Math.random() *A ->[0,A) double A->int
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;
}