私は最近、ビジュアルベーシックで選択ソートプログラムを作成しようとしていました。私は配列の整数を降順にソートすることに成功しましたが、同じメソッドを使用して配列を昇順にソートすると、正常に処理されますが、レンジ "エラーです。私が言ったようにVisual Basicの選択「インデックスが範囲外です」の並べ替え
Sub sortDescending()
Dim array() As Integer = {3, 5, 200}
Dim maxPos As Integer
Dim firstI As Integer
While firstI <= UBound(array)
For i = firstI To UBound(array)
If array(i) > array(maxPos) Then
maxPos = i
End If
Next
Dim largestNumber As Integer = array(maxPos)
array(maxPos) = array(firstI)
array(firstI) = largestNumber
firstI = firstI + 1
maxPos = firstI
Console.WriteLine(largestNumber)
End While
End Sub
Sub sortAscending()
Dim array() As Integer = {3, 5, 200}
Dim minpos As Integer
Dim firstI As Integer
While firstI >= LBound(array)
For i = firstI To LBound(array)
If array(i) < array(minpos) Then
minpos = i
End If
Next
Dim smallestNumber As Integer = array(minpos)
array(minpos) = array(firstI)
array(firstI) = smallestNumber
firstI = firstI + 1
minpos = firstI
Console.WriteLine(smallestNumber)
End While
、降順のソートが、しかし、問題なく動作します昇順1は私にエラーを与えている。以下は、私のコードです。誰でも私にこの問題を解決する方法を教えてもらえますか?ありがとう:)
あなたはどのようなライン上で私たちに指示する必要がありますあなたはエラーが発生します。また、 'data = data.OrderByDescending(Function(x)x).ToArray()'だけが必要です。昇順のために 'OrderByDescending'を' OrderBy'に変更してください。 – Plutonix
ああ、私は「Dim smallestNumber As Integer = array(minpos)」というエラーを受け取りました。残念ながら、このプログラムは割り当て用ですので選択ソートメソッドを使って行う必要があります:/ –
'firstI> = LBound(array)'は常にTrueですので、ループを終了することはありません... 2以上になると、Indexは範囲外です。特定の理由で独自のソートルーチンを構築していない限りあなたはPlutonixが示唆しているように、組み込みの仕分け機能を使用する必要があります。 –