配列に入れたデータを元にその要素の配列内での順位を求めたかったので方法をちと考えてみた。使うのはArray.SortとArray.BinarySearch。まあ、単純に配列に入ったデータをソートしてそのインデックスを求めれば順位になるかと考えて、同じデータを持つ配列をソートして元データをバイナリーサーチしてみた。小さい順ですが、大きい順も応用可能かな。
なんかもっとスマートな方法もありそうだけど、取敢えずこれでも出来た。
- int[] ar = {4,7,2,8,5,9,3};
- int[] sortedAr = new int[ar.Length];
- Array.Copy(ar, sortedAr, ar.Length);
- Array.Sort(sortedAr);
- int iRank = Array.BinarySearch(sortedAr,ar[求めるインデックス])+1;