¿Qué es un logaritmo? comprensión sencilla

Logaritmo

¿Qué es un logaritmo?

El logaritmo es una herramienta de prueba que utiliza una gran cantidad de datos aleatorios para probar dos algoritmos diferentes para el mismo problema y juzga la racionalidad y corrección del algoritmo. En comparación con las pruebas en línea, es más engorroso, pero la precisión es mayor.

Haz un logaritmo simple

Tome el algoritmo de clasificación como ejemplo, hacemos muchas matrices aleatorias para juzgar si el algoritmo de clasificación es correcto.

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

}

Supongo que te gusta

Origin blog.csdn.net/abaidaye/article/details/126588473
Recomendado
Clasificación