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

そして、ここに 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;
}

私には、どちらも同じように見えます。私は各要素を比較しており、それを見つけた瞬間に交換します..しかし、両方の実装は多かれ少なかれ同じように見えます。私はそれを間違ってコーディングしましたか?

4

1 に答える 1

4

はい、私の意見では、挿入ソートを間違ってコーディングしました。

挿入ソートの実装を確認する

バブル ソート: バブル ソートでは、繰り返しで要素を他のすべての要素と比較し、条件 ( < または > ) が true の場合、要素を交換します。

一方

挿入ソート: 挿入ソートの反復では、フォーカスのある要素を他の要素と比較し、配列のソートされた部分の正しい位置に配置します。

ヒント: 両方のアルゴリズムを調べて、いつスワップが行われるかを確認すると、違いをよりよく理解するのに役立ちます。

于 2013-09-24T01:21:53.200 に答える