1

私は練習のためにプログラミングの課題に取り組んでいますが、これを理解するのに苦労しています。時間と今の眠気のせいかもしれませんが、寝る前に済ませたいです。

配列の各要素の値を昇順にソートしたい。秘訣は、sort() メソッドを使用しないことです。これが私がこれまでに持っているものです:

          for (int i = 0; i < freq_array.Length; i++)
        {
            for (int n = 1; n < i; n++)
            {
                if (freq_array[n] < freq_array[i])
                    freq_array[i] = freq_array[n];
            }
        }

        for (int x = 0; x < freq_array.Length; x++)
        {
            lblOutDigits.Text = "";
            lblOutDigits.Text += freq_array[x];
        }

テストすると、ラベルに「0」が表示されます。freq_array が行うことは、特定のボタンがクリックされる頻度を保持することです。したがって、Button3 を 5 回クリックし、次に Button7 を 3 回クリックすると、33333777 が表示されるはずです。3 と 7 をランダムな順序でクリックしたとしてもです。

4

5 に答える 5

3

値を交換する必要があります

     int temp;
     for (int i = 0; i < freq_array.Length; i++)
            {
                for (int n = 1; n < i; n++)
                {
                    if (freq_array[n] < freq_array[i]){
                        temp = freq_array[i];
                        freq_array[i] = freq_array[n];
                        freq_array[n] = temp;
                    }
                }
            }
于 2012-12-11T09:25:47.073 に答える
2

これは私には危険に見えます:

if (freq_array[n] < freq_array[i])
    freq_array[i] = freq_array[n];

これは、値を index から index にコピーするだけです。index にあった値を完全に失っています。代わりに値を交換したいと思います。nii

于 2012-12-11T09:19:04.147 に答える
1
int[] x = { 20, 10, 50, 46, 26, 87, 25, 5, 97, 24 };
for (int i = 0; i < x.Length; i++)
{
    for (int j = i; j < x.Length; j++)
    {
        if (x[i] > x[j])
        {
            int temp;
            temp = x[i];
            x[i] = x[j];
            x[j] = temp;
        }
    }

}
于 2015-04-27T13:42:05.270 に答える