0

挿入ソートを作成したいのですが、それ以上取得できません。解決できない2番目の「コマンド用」で、範囲外になるまで途中で解決しました。正しい方向に進んでいるかどうかはわかりませんが、解決策をシンプルに保ちたいと思います。

int arrayzähler = 0;
int[] Speicherarray = new int[randomarray.Length];
//ausgabearray[1] = randomarray[1]; //für vergleich

foreach (int wert in randomarray)
{
    if (wert == randomarray[0])
    {
        Speicherarray[0] = wert;
        ausgabearray[0] = wert;
        arrayzähler++;
        continue; // erster wert = ausgabearray[0]
    }

    arrayzähler++;

    for (int i = arrayzähler - 1; i >= arrayzähler - 1; i--)
    {
        for (int a = arrayzähler - 2; a >= arrayzähler - 2; a--)
        {
            if (Speicherarray[i] < Speicherarray[a])
            {
                Speicherarray[a] = Speicherarray[a + 1];
            }
            else if (Speicherarray[i] >= Speicherarray[a])
            {
                Speicherarray[a] = wert;
                ausgabearray[i] = Speicherarray[i];
            }
        }
    }
}
4

1 に答える 1

2

これは挿入ソートの正確なコーディングです。

public void Sort(int[] collection)
    {
        int inner, temp;
        for (int i = 1; i < collection.Length; i++)
        {
            temp = collection[i];
                 inner = i;
            while (inner > 0 && collection[inner - 1] >= temp)
            {
                collection[i] = collection[inner - 1];
                --inner;
            }
            collection[inner] = temp;
        }
        Console.WriteLine("Printing Insertion Sorted Items");
        Print();                           
    }
于 2012-09-27T08:44:04.407 に答える