package com.sort.admin;
import java.util.Arrays;
public class CheckNumber {
// 正确的排序
public static void rightMethod(int[] arr) {
Arrays.sort(arr);
}
// 随机数组生成器
public static int[] generateRandomArray(int size, int value) {
// 生成随机长度(0-size)
int[] arr = new int[(int) (Math.random() * (size + 1))];
// 生成随机数字(-value 到 value)
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) ((value + 1) * Math.random()) - (int) (value * Math.random());
}
return arr;
}
// 判断两个数组是否相等
public static boolean isEqual(int[] arrA, int[] arrB) {
if ((arrA == null && arrB != null) || (arrA != null && arrB == null)) {
return false;
}
if (arrA == null && arrB == null) {
return true;
}
if (arrA.length != arrB.length) {
return false;
}
for (int i = 0; i < arrA.length; i++) {
if (arrA[i] != arrB[i]) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int testTime = 5000;
int size = 20;
int value = 50;
boolean isSucceed = true;
for (int i = 0; i < testTime; i++) {
int[] arr1 = generateRandomArray(size, value);
int[] arr2 = Arrays.copyOf(arr1, arr1.length);
int[] arr3 = Arrays.copyOf(arr1, arr1.length);
// System.out.println("arr1: -->\n" + Arrays.toString(arr1));
// System.out.println("arr2: -->\n" + Arrays.toString(arr2));
// System.out.println("arr3: -->\n" + Arrays.toString(arr3));
InsertionSort.sort(arr2);
rightMethod(arr3);
// System.out.println("arr1: <--\n" + Arrays.toString(arr1));
// System.out.println("arr2: <--\n" + Arrays.toString(arr2));
// System.out.println("arr3: <--\n" + Arrays.toString(arr3));
if (!isEqual(arr2, arr3)) {
isSucceed = false;
//打印出出现bug的样本
System.out.println("发生错误的样本:" + Arrays.toString(arr1));
break;
}
}
System.out.println(isSucceed ? "true" : "false");
}
}
算法对数器
- 本文链接: https://sly.plus/archives/checknumber
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明出处!