C#で配列のソート
C#で配列のソートをする方法としてArray.Sortがある.
ただし,引数に与えた配列は順番が破壊されてしまう.
通常は,以下のようにするが,これだと元のtestは書き換えられる.
Int32[] test = new Int32[5]; for (int i = 0; i < test.Length; i++) { test[i] = test.Length - i; } Array.Sort(test);
もとの配列の中でのインデックスを記録しておきたい場合,test1にインデックスを記録しておき,Array.Sortに二つ配列を渡してやると,test1はソート前の配列での順番を表すことになる.
Int32[] test1 = new Int32[5]; Int32[] test2 = new Int32[5]; Random rand = new Random(100); for (int i = 0; i < test1.Length; i++) { test1[i] = i; test2[i] = rand.Next(); } Array.Sort(test2, test1);