0

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

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;
}

这是插入排序

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;
}

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

4

1 回答 1

4

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

检查插入排序的实现

冒泡排序:在冒泡排序中,在迭代中,我们将元素与所有其他元素进行比较,如果条件(< 或 >)为真,则交换元素

然而

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

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

于 2013-09-24T01:21:53.200 回答