• 締切済み

○番目に小さい数字を求める関数ってないですか?

abc(30) というような感じで配列に数字がランダムに入っています。重複はないものとします。 たとえば、2番目に小さい数字を求めたいのですが、簡単に求める方法、たとえば関数のようなものってないですか? ???(abc(30),2) あるとすればこんな感じになるのでしょうか。 言語 VB.NET2003

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

ソートするのは、.NETではそんなに難しくないです。 サンプル Dim data As Integer() Dim sortedData As Integer() data = New Integer() {245, 21, 52, 103, 1} sortedData = Array.CreateInstance(GetType(Integer), data.Length) data.CopyTo(sortedData, 0) Array.Sort(sortedData) System.Console.WriteLine("2番目に小さい値:{0}", sortedData(1)) 要素数があらかじめ決まっているなら宣言はもっと簡単です。 もとのランダムな並びが必要ないなら、コピーせずにそのままソートできます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルの関数=LARGE(範囲、順位)のようなものは .Netでも無いでしょう。VB6までにはありません。 結局最後の1つのデータが、それまでの2番目を変える可能性があるので、データ全部を対象にしないと行けないわけです。それで妙案はなく、本件は、#1でもおっしゃるように、すべてのデータのソートそのものであることになります。ソートが出来れば2番目の要素ですからabc(2)ですね。

  • vr_magnum
  • ベストアンサー率20% (6/29)
回答No.1

配列にソートをかけて、n番目を参照すればいいと思います。

関連するQ&A

専門家に質問してみよう