了解冒泡/插入排序

时间:2013-09-24 01:12:51

标签: java algorithm sorting

好吧,我与这些学校理论脱节,但我正在努力让自己焕然一新。我读了算法并实现了它。这是代码

public int[] bubbleSort(int[] array)
{
    int swap_bucket;
    for (int i = 0; i < array.length; i++)
    {
        for (int j = i + 1; j < array.length; j++)
        {
            if (array[i] > array[j])
            {
                swap_bucket = array[i];
                array[i] = array[j];
                array[j] = swap_bucket;
            }
        }
    }

    return array;
}

这是InsertionSort

public int[] InsertionSort(int array[])
{
    int swap_bucket;
    for (int i = 0; i < array.length; i++)
    {
        for (int k = i; ((k > 0) && (array[k] < array[k-1])); k--)
        {
            swap_bucket = array[k];
            array[k] = array[k-1];
            array[k-1] = swap_bucket;
        }
    }

    return array;
}

对我而言,两者看起来都一样。我正在比较每个元素和我找到它的那一刻,我交换它..但看起来两个实现都或多或少相同。我编码错了吗?

1 个答案:

答案 0 :(得分:4)

是的,在我看来,您编码插入排序错误。

检查Insertion Sort

上的实施情况

冒泡排序:在冒泡排序中在迭代中我们将元素与所有其他元素进行比较,如果条件(&lt;或&gt;)为真,那么我们交换元素

,而

插入排序:在插入排序的迭代中,我们将焦点中的元素与其他元素进行比较,并将其放置在数组的已排序部分中的正确位置。

提示:查看两种算法并查看交换何时完成将有助于您更好地理解差异。