Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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 bubblesort变体如何有效地执行排序?_Java_Algorithm_Sorting - Fatal编程技术网

Java bubblesort变体如何有效地执行排序?

Java bubblesort变体如何有效地执行排序?,java,algorithm,sorting,Java,Algorithm,Sorting,//我无意中在泡泡糖上做了一个奇怪的变化。我错误地省略了通常的if a[j]>a[j+1],但是代码仍然能够完美地运行。与普通的泡泡港相比,使用这种泡泡港是否有任何优势 public int[] bubbleSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { for (int j = i + 1; j < a.length - 1; j++) { if

//我无意中在泡泡糖上做了一个奇怪的变化。我错误地省略了通常的if a[j]>a[j+1],但是代码仍然能够完美地运行。与普通的泡泡港相比,使用这种泡泡港是否有任何优势

public int[] bubbleSort(int[] a)
{
    for (int i = 0; i < a.length - 1; i++)
    {
        for (int j = i + 1; j < a.length - 1; j++)
        {
            if (a[i] > a[j])
            {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;

            }
        }
    }
    return a;
}
public int[]bubbleSort(int[]a)
{
对于(int i=0;ia[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=温度;
}
}
}
返回a;
}

注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你知道为什么吗?),在第二次迭代后,第二个值将是第二个最小值,在第三次迭代后,第三个值将是第三个最小值,等等

(也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是
a.length
,而不是
a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)

您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序


希望这有帮助

注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么了吗?),在第二次迭代之后,第二个值将是第二个最小值,在第三次迭代之后,第三个值将是第三个最小值,等等

(也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是
a.length
,而不是
a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)

您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序


希望这有帮助

注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么了吗?),在第二次迭代之后,第二个值将是第二个最小值,在第三次迭代之后,第三个值将是第三个最小值,等等

(也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是
a.length
,而不是
a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)

您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序


希望这有帮助

注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么了吗?),在第二次迭代之后,第二个值将是第二个最小值,在第三次迭代之后,第三个值将是第三个最小值,等等

(也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是
a.length
,而不是
a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)

您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序



希望这有帮助

这条丢失的线属于哪里?我没有看到索引
k
。如果我遗漏了什么,请告诉我。你把
k+1
换成了
j
,那只不过是
k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1]这条缺失的行属于哪里?我没有看到索引
k
。如果我遗漏了什么,请告诉我。你把
k+1
换成了
j
,那只不过是
k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1]这条缺失的行属于哪里?我没有看到索引
k
。如果我遗漏了什么,请告诉我。你把
k+1
换成了
j
,那只不过是
k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1]这条缺失的行属于哪里?我没有看到索引
k
。如果我遗漏了什么,请告诉我。你把
k+1
换成了
j
,那只不过是
k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1],这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢