定义

生成随机数样本并进行比对的机器。例如,我自己写了个选择排序,但我并不知道对不对,这个时候就可以通过对数器来验证。

代码示例

public class CodeLogarithmizer {

    /**
     * 选择排序:从小到大排序
     * @param arr
     */
    public static void selectSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            // 数组为空或者长度小于2,则不用排序
            return;
        }
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            int currentMinIndex = i;
            for (int j = i + 1; j < n; j++) {
                currentMinIndex = arr[j] < arr[currentMinIndex] ? j : currentMinIndex;
            }
            int temp = arr[i];
            arr[i] = arr[currentMinIndex];
            arr[currentMinIndex] = temp;
        }
    }

    public static void printArr(int[] arr) {
        for (int j : arr) {
            System.out.print(j + " ");
        }
        System.out.println();
    }

    /**
     * 生成一个长度在[0,maxLen]之间并且值在[0,maxValue]之间数组
     * @param maxLen        数组的最大长度
     * @param maxValue      数组的最大值
     * @return              随机数组
     */
    public static int[] lenRandomValueRandom(int maxLen, int maxValue) {
        // 使得len的值在0~maxLen之间
        int len = (int)(Math.random() * (maxLen + 1));
        int[] arr = new int[len];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random() * (maxValue + 1));
        }
        return arr;
    }

    public static boolean isSorted(int[] arr) {
        if (arr.length < 2) {
            return true;
        }
        int maxValue = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (maxValue > arr[i]) {
                return false;
            }
            maxValue = Math.max(maxValue, arr[i]);
        }
        return true;
    }

    public static void main(String[] args) {
        // 循环指定次数
        int times = 1000;
        // 随机数组的最大长度
        int maxLen = 50;
        // 随机数组的最大值
        int maxValue = 2000;
        for (int i = 0; i < times; i++) {
            int[] arr = lenRandomValueRandom(maxLen, maxValue);
            selectSort(arr);
            if (!isSorted(arr)) {
                printArr(arr);
                System.out.println("排序错误");
                System.out.println("=========================");
            }
        }
    }

}
最后修改:2024 年 01 月 25 日
如果觉得我的文章对你有用,请随意赞赏