2022/08/29

配列内の数値で順位付け

 配列に入れたデータを元にその要素の配列内での順位を求めたかったので方法をちと考えてみた。使うのはArray.SortとArray.BinarySearch。まあ、単純に配列に入ったデータをソートしてそのインデックスを求めれば順位になるかと考えて、同じデータを持つ配列をソートして元データをバイナリーサーチしてみた。小さい順ですが、大きい順も応用可能かな。

  1. int[] ar = {4,7,2,8,5,9,3};
  2. int[] sortedAr = new int[ar.Length];
  3. Array.Copy(ar, sortedAr, ar.Length);
  4. Array.Sort(sortedAr);
  5. int iRank = Array.BinarySearch(sortedAr,ar[求めるインデックス])+1;
なんかもっとスマートな方法もありそうだけど、取敢えずこれでも出来た。

0 件のコメント:

コメントを投稿