对数器
对数器的作用:验证自己的算法
实现对数器的步骤:
- 需要测得目标方法
- 必须是一个完全对的,不考虑复杂度的方法
- 产生随机样例
- 两个方法跑相同随机样例,判断所返回是否相同
- 在不相同出给出标志,人工修改
- n组样例通过即表示 算法基本无误(也不能排除极端情况,但也接近99%)
要点: 通过两种不同实现方法,通过一种绝对没有错误的算法去验证另一种解法
对数器实现
生成随机数组
下面代码是基础,可根据实际需求添加功能
生成随机数组
/**
*
* @param len 闯入数组长度
* @param numMax 数组内数字最大值
* @return 目标数组
*/
public static int [] getArr(int len,int numMax){
int arr[] = new int[len];
for (int i = 0; i < len; i++) {
// 通过随机数给数组复制
arr[i] = (int) (Math.random() * numMax + 1);
}
return arr;
}
生成随机数
// [-range, +range]
public static int getRangeNumber(int range){
return (int) (Math.random() * (range + 1) - (int)(Math.random() * (range + 1)));
}
比较数组
/*
比较器
*/
public static boolean judge(int arr1[] , int arr2[]){
for (int i = 0; i < arr1.length; i++) {
if(arr1[i] != arr2 [i]){
System.out.println("返回的值不对 : 第" + i + "位置的数字 arr1=" + arr1[i] + " * arr2=" + arr2[i]);
System.out.println(arr1.length);
return false;
}
}
return true;
}
交换数组值
public static void swap(int arr[] ,int left,int right){
int temp = arr[left];
arr[left] =arr[right];
arr[right] = temp;
}
其他功能实际功能实际处理