Was ist ein Logarithmus? einfaches Verständnis

Logarithmus

Was ist ein Logarithmus?

Der Logarithmus ist ein Testwerkzeug, das eine große Menge zufälliger Daten verwendet, um zwei verschiedene Algorithmen für dasselbe Problem zu testen, und die Rationalität und Korrektheit des Algorithmus beurteilt. Im Vergleich zu Online-Tests ist es umständlicher, aber die Genauigkeit ist höher.

Machen Sie einen einfachen Logarithmus

Nehmen Sie den Sortieralgorithmus als Beispiel. Wir erstellen viele zufällige Arrays, um zu beurteilen, ob der Sortieralgorithmus korrekt ist.

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @author `dongxu.kwb`
 * @date `2022/8/29`
 */
public class test {
    
    
    public static void main(String[] args) {
    
    
        int testTime = 50000; //测试的次数
        int maxSize = 100; //长度 [0 ~ 100]
        int maxValue = 100; // [-100 ~ 100]
        boolean succeed = true; //测试是否成功
        for (int i = 0; i < testTime; i++) {
    
     //测试开始
            int[] arr1 = newRandomArray(maxSize, maxValue); //生成两个相同的随机数组
            int[] arr2 = copyArray(arr1);
            insertSort(arr1);
            Arrays.sort(arr2);
            if (!isEqual(arr1, arr2)) {
    
     //比较两个数组是否相同
                succeed = false;
                break;
            }
        }
        System.out.println(succeed ? "恭喜你!两种算法的结果相同。" : "两种算法结果不相同,请进行检查。");
    }

    /**
     * 生成随机数组的方法
     */

    public static int[] newRandomArray(int maxSize, int maxValue){
    
    

        //生成[0~n-1]的所有整数  (int)(Math.random() * n)

        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;
    }

    /**
     * 复制数组的方法
     * @param 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;
    }

    /**
     * 判断两个数组是否相等的方法
     * @param arr1
     * @param arr2
     * @return
     */

    public static boolean isEqual(int[] arr1, int[] arr2) {
    
    
        if ((arr1 == null && arr2 != null) || (arr1 != null && arr2 == null)) return false;
        if (arr1 == null && arr2 == null) return true;
        if (arr1.length != arr2.length) return false;
        for (int i = 0; i < arr1.length; i++) {
    
    
            if (arr1[i] != arr2[i]) return false;
        }
        return true;
    }
    public static void insertSort(int[] arr) {
    
    
        if (arr == null || arr.length < 2) {
    
    
            return;
        }
        for (int i = 1; i < arr.length; i++) {
    
    
            for (int j = i; j > 0 && arr[j] < arr[j - 1]; j--) {
    
    
                swap(arr, j, j-1);
            }
        }
    }
    public static void swap(int[] arr, int a, int b) {
    
    
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b]= temp;
    }

}

おすすめ

転載: blog.csdn.net/abaidaye/article/details/126588473