Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 冒泡排序的复杂性_Java_Algorithm_Sorting_Time Complexity - Fatal编程技术网

Java 冒泡排序的复杂性

Java 冒泡排序的复杂性,java,algorithm,sorting,time-complexity,Java,Algorithm,Sorting,Time Complexity,我在很多地方见过,气泡排序的复杂性是O(n2) 但这怎么可能,因为内部循环应该总是运行n-i次 for (int i = 0; i < toSort.length -1; i++) { for (int j = 0; j < toSort.length - 1 - i; j++) { if(toSort[j] > toSort[j+1]){ int swap = toSort[j+1

我在很多地方见过,气泡排序的复杂性是O(n2)

但这怎么可能,因为内部循环应该总是运行n-i次

for (int i = 0; i < toSort.length -1; i++) {
            for (int j = 0; j < toSort.length - 1 - i; j++) {
                if(toSort[j] > toSort[j+1]){
                    int swap = toSort[j+1];
                    toSort[j + 1] = toSort[j];
                    toSort[j] = swap;
                }
            }
        }
for(int i=0;itoSort[j+1]){
int swap=toSort[j+1];
toSort[j+1]=toSort[j];
toSort[j]=交换;
}
}
}
那么
n-i
的“平均”值是多少<代码>n/2


因此,它在
O(n*n/2)
中运行,这被认为是O(n2)

因为外循环运行n次,而对于每个迭代,内循环运行(n-i)次,操作总数可以计算为
n*(n-i)=O(n2)

有不同类型的时间复杂度-您使用的是大O表示法,这意味着此函数的所有情况都至少具有此时间复杂度

当它接近无穷大时,这基本上是n^2时间复杂度的最坏情况。时间复杂度并不是一门精确的艺术,但对于这类算法的速度来说,更像是一个大概的估计,因此,你试图做到太精确


例如,理论时间复杂度很可能是n^2,尽管理论上它应该是n*n-1,因为可能会执行任何不可预见的处理开销。

它是O(n^2),因为长度*长度

但为什么我们不使用“/2”@DeepakKumar,因为当你处理规模时,它没有任何意义。大O表示法处理比例。你会认为O(n)与O(n-1)不同吗?即使n!=n-1它们具有相同的刻度。这同样适用于
n/2
n