数据规模比较小的时候复杂度是不是没那么准?

来源:1-5 选择排序法的复杂度分析

jyau

2021-10-20 16:23:13

问题描述:

写了选择排序之后,我也做了测试,发现数组从10000->100000这里是符合O(n^2)的,但是反过来,数组只有1000的时候,耗时跟10000的情况只差了10倍左右,远远达不到100倍的程度。这是不是因为数据规模太小,然后受其它因素影响较大导致的?


相关截图:

https://img.mukewang.com/climg/616fcc7609ea2dad02380259.jpg


相关代码:

public static <E extends Comparable<E>> void sort(E[] arr) {
    for (int i = arr.length - 1; i >= 0; i--) {
        int maxIndex = i;
        for (int j = i - 1; j >= 0; j--) {
            if (arr[maxIndex].compareTo(arr[j]) < 0) {
                maxIndex = j;
            }
        }
        if (maxIndex != i) {
            swap(arr, i, maxIndex);
        }
    }
}


写回答

1回答

liuyubobobo

2021-10-20

是的。小数据规模的时候,操作系统本身的干扰,程序的调度等等会占大比重,所以看不出逻辑本身的性能变化。如果你想看一个算法的性能,必须用相对大的数据,至少让执行时间是秒这个级别。


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2584 学习 · 1063 问题

查看课程