Сортировка массива - VB (60365)
Формулировка задачи:
Вот этот код у меня в модуде
При нажатии на кнопку, выполняется сдедущее:
Вопрос: почему после этих операций элементы в массиве не сортируются а остаются в том порядке в котором создались рандомно?
Листинг программы
- Public A() As Single
- Public N, k, m, i, j As Integer
- Public Sub Vvod()
- Randomize
- For k = 1 To N
- A(k) = CInt(Rnd() * 10000 * (-1) ^ k) / 100
- Next
- For i = 1 To N
- For j = 1 To N - i
- If A(i) > A(j + i) Then
- m = A(j)
- A(j) = A(j + i)
- A(j + i) = m
- End If
- Next j
- Next i
- End Sub
Листинг программы
- N = 20
- ReDim A(N) As Single
- Call Vvod
Решение задачи: «Сортировка массива»
textual
Листинг программы
- Private Sub Command1_Click()
- Dim A() As Single, s As String
- ReDim A(CInt(InputBox("n =", , 20)))
- Call Vvod(A)
- s = s & "Исходный массив:" & vbCrLf & ArrToStr(A)
- Call Sort(A)
- s = s & vbCrLf & "Массив после сортировки:" & vbCrLf & ArrToStr(A)
- MsgBox s
- End Sub
- Public Sub Vvod(ByRef A() As Single)
- Dim i As Integer
- Randomize
- For i = 1 To UBound(A)
- A(i) = CInt(Rnd() * 10000 * (-1) ^ i) / 100
- Next
- End Sub
- Sub Sort(ByRef A() As Single)
- Dim i As Integer, j As Integer, m As Single
- For i = 1 To UBound(A)
- For j = 1 To UBound(A) - 1
- If A(j) > A(j + 1) Then
- m = A(j)
- A(j) = A(j + 1)
- A(j + 1) = m
- End If
- Next j
- Next i
- End Sub
- Function ArrToStr(ByRef A() As Single) As String
- Dim i As Integer
- For i = 1 To UBound(A)
- ArrToStr = ArrToStr & A(i) & vbTab
- Next i
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д