Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting 这个冒泡排序衍生工具的相对运行时间是多少? 公共类排序{ 公共静态无效排序(int[]arr){ 对于(int i=0;iarr[i+1]){ /*交换*/ int temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=温度; /*使i==-1,因为在循环结束时,它会递增到0*/ i=-1; } } } }_Sorting_Bubble Sort - Fatal编程技术网

Sorting 这个冒泡排序衍生工具的相对运行时间是多少? 公共类排序{ 公共静态无效排序(int[]arr){ 对于(int i=0;iarr[i+1]){ /*交换*/ int temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=温度; /*使i==-1,因为在循环结束时,它会递增到0*/ i=-1; } } } }

Sorting 这个冒泡排序衍生工具的相对运行时间是多少? 公共类排序{ 公共静态无效排序(int[]arr){ 对于(int i=0;iarr[i+1]){ /*交换*/ int temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=温度; /*使i==-1,因为在循环结束时,它会递增到0*/ i=-1; } } } },sorting,bubble-sort,Sorting,Bubble Sort,这与传统的气泡排序不同。但它的运行时间是否更糟糕 我相信这仍然是O(N^2),所以我看不出它有多么糟糕…这肯定是bubblesort的一个实现,尽管它不是传统的算法。你说得对,算法是O(n^2) 虽然该算法与传统算法在渐近复杂度方面相同,但在实际机器上的运行时间可能不同。记住,当我们研究O(无论什么)复杂性时,常量因子被忽略。所以 public class Sort { public static void sort(int[] arr) { for (int i = 0

这与传统的气泡排序不同。但它的运行时间是否更糟糕


我相信这仍然是O(N^2),所以我看不出它有多么糟糕…

这肯定是bubblesort的一个实现,尽管它不是传统的算法。你说得对,算法是O(n^2)

虽然该算法与传统算法在渐近复杂度方面相同,但在实际机器上的运行时间可能不同。记住,当我们研究O(无论什么)复杂性时,常量因子被忽略。所以

public class Sort {
    public static void sort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                /* swap */
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
                /* make i == -1 because at the end of the loop, it increments to go to 0 */
                i = -1;
            }
        }
    }
}
请记住,O(无论什么)都是函数集

考虑传统的bubblesort:这里通过不断增加数组索引来遍历整个数组。在这个算法中,您进行了一些实际上不需要的比较(因为您知道当您增加外部for循环的循环变量时(在传统的bubblesort中,您有2个for循环),您知道左侧的所有内容都已排序。因此您不必再次循环

在实践中,这可能不会有什么不同,因为算法需要太多的时间,以至于在这种效果出现之前,你会厌倦它。

有趣的野兽

以最坏的情况为例,反排序输入:

O(3 n^2) = O(n^2)
将9从第一个位置移动到最后一个位置需要进行多少次比较?
1+2+3+4+5+6+7+8=(n-1)*(n-2)/2

将8发送到倒数第二个位置如何?
1+2+3+4+5+6+7=(n-2)*(n-3)/2

因此,在执行的比较中,您的算法实际上是立方的

尽管如此,隧道尽头还是有一盏灯:

与标准的冒泡排序一样,交换次数仍然是二次的。

@Jens该算法没有特定的语言。这是正确的答案,请原谅我的傲慢,我忘记了将数组大小与每个元素的比较复杂性相乘。这是一个从大学开始的坏习惯天。
9 8 7 6 5 4 3 2 1