dポイントプレゼントキャンペーン実施中!

abc(30)

というような感じで配列に数字がランダムに入っています。重複はないものとします。
たとえば、2番目に小さい数字を求めたいのですが、簡単に求める方法、たとえば関数のようなものってないですか?

???(abc(30),2)
あるとすればこんな感じになるのでしょうか。

言語
VB.NET2003

A 回答 (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))
要素数があらかじめ決まっているなら宣言はもっと簡単です。
もとのランダムな並びが必要ないなら、コピーせずにそのままソートできます。
    • good
    • 0

エクセルの関数=LARGE(範囲、順位)のようなものは


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

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!