//我无意中创建的一个奇怪的变种。如果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;
}
答案 0 :(得分:3)
请注意,在外部循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么?)第二次迭代后,第二个值将是第二个最小值,第三个迭代后第三个值将是第三个最小值,等等。
(也就是说,我认为你的逻辑中存在一个错误。j
的上限应该是a.length
而不是a.length - 1
,否则数组中的最后一个值永远不会与其他任何东西相比或移动。)
您可能需要查看selection sort,它的工作原理是将数组中的最小值移到前面,然后移动到第二小,等等。您提出的算法(基本上)是选择排序的修改版本,而不是修改后的冒泡排序。
希望这有帮助!