Отсортировать массив по возрастанию или убыванию - VB
Формулировка задачи:
Дан код программы:
Нужно добавить ListBox2 и отсортировать массив по возрастанию или убыванию.
Я пробовал было добавлять это:
И в CommandButton1 операцию Call BubbleSort(MM, XX), но у меня ошибки.
Решение задачи: «Отсортировать массив по возрастанию или убыванию»
textual
Листинг программы
Private Sub MaassiveMake(ByVal m As Integer, ByRef X() As Single)
Dim i As Integer
Randomize
For i = 0 To m - 1
X(i) = Int(Rnd * 100 + 1)
'X(I) = ((I + 1) ^ 4) - ((I - 1) * 3)
Next
End Sub
Private Sub SumAr(ByVal m As Integer, ByRef Sum As Single, ByRef X() As Single)
Dim i As Integer
Sum = 0
For i = 0 To m - 1
Sum = Sum + X(i)
Next
End Sub
Private Sub PrintArray(ByRef X() As Single, ByVal m As Integer, ByVal s As String, ByRef L As Object, Optional ByVal ClearListBox As Boolean = True)
If ClearListBox Then L.Clear
L.AddItem s
For i = 0 To m - 1
L.AddItem ("X(" & Str(i + 1) & ") = " & Str(X(i)))
Next
End Sub
Private Sub MinMaxAr(ByVal m As Integer, ByRef SumMin As Single, ByRef SumMax As Single, ByRef X() As Single)
Dim i As Integer
Sum = 0
For i = 0 To m - 1
If i = 0 Then
SumMin = X(i): SumMax = X(i)
Else
If SumMax <= X(i) Then SumMax = X(i)
If SumMin >= X(i) Then SumMin = X(i)
End If
Next
End Sub
Private Sub BubbleSort(ByRef m As Integer, ByRef X() As Single, ByVal n As Boolean)
Dim i As Byte, j As Byte, tmp As Integer
For i = 0 To m - 1
For j = 0 To m - 2
If n Then
If X(j) > X(j + 1) Then tmp = X(j): X(j) = X(j + 1): X(j + 1) = tmp
Else
If X(j) < X(j + 1) Then tmp = X(j): X(j) = X(j + 1): X(j + 1) = tmp
End If
Next j
Next i
End Sub
Private Sub CommandButton1_Click()
Dim XX() As Single, C As Single, SMin As Single, SMax As Single, MM As Integer
MM = Val(TextBox1.Text)
ReDim XX(0 To MM)
Call MaassiveMake(MM, XX)
Call PrintArray(XX, MM, "Массив:", ListBox1)
Call SumAr(MM, C, XX)
Call MinMaxAr(MM, SMin, SMax, XX)
Call BubbleSort(MM, XX, True)
Call PrintArray(XX, MM, "По возрастанию:", ListBox2, True)
Call BubbleSort(MM, XX, False)
Call PrintArray(XX, MM, "По убыванию:", ListBox2, False)
TextBox3.Text = "Sum = " & Str(C)
TextBox2.Text = "Min = " & Str(SMin) & vbNewLine & "Max = " & Str(SMax)
End Sub