这种冒泡变化如何有效地进行排序?

时间:2013-10-28 20:56:24

标签: java algorithm sorting

//我无意中创建的一个奇怪的变种。如果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;
}

1 个答案:

答案 0 :(得分:3)

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

(也就是说,我认为你的逻辑中存在一个错误。j的上限应该是a.length而不是a.length - 1,否则数组中的最后一个值永远不会与其他任何东西相比或移动。)

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

希望这有帮助!