Сортировка массива чисел по возрастанию - VB (59711)
Формулировка задачи:
Дан. Следующий код. Но его надо изменить так, чтобы он сравнивал не просто все подряд числа, а отсортировывал только то, что осталось от массива чисел. Пример на скрине.
Листинг программы
- Private Sub Command1_Click()
- Label1.Caption = " "
- Label2.Caption = Label1.Caption
- Label1.Font.Size = 18
- Label2.Font.Size = Label1.Font.Size
- Dim massive(9) As Long, i As Integer, J As Integer, N As Integer, Tmp As Double
- Randomize (Time)
- For i = 0 To 9
- massive(i) = Rnd() * 10
- Next i
- For i = 0 To 9
- Label1.Caption = Label1.Caption & massive(i) & Space(3)
- Next i
- N = 9
- For i = 0 To N - 1
- For J = i To N
- If massive(i) < massive(J) Then
- Tmp = massive(J)
- massive(J) = massive(i)
- massive(i) = Tmp
- End If
- Next J
- Label2.Caption = Label2.Caption & massive(i) & Space(3)
- Next i
- Label2.Caption = Label2.Caption & massive(N)
- End Sub
Решение задачи: «Сортировка массива чисел по возрастанию»
textual
Листинг программы
- Option Explicit
- '
- ' © Антихакер32™
- '
- '1. Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки.
- '2. Отсортировать массив по возрастанию.
- '3. Организовать поиск в отсортированном массиве.
- Dim j$()
- Private Sub Form_Activate()
- Dim s$, f&, u&
- 'Для примера берём какой-либо текст
- s = "Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки."
- j = Split(LCase(s)): u = UBound(j) 'Разбиваем на слова
- qSort 0, u: Cls 'Быстро сотрируем и выводим отсортированный список
- For f = 0 To u: Print f & " " & j(f): Next
- Print "Ищем слово одномерный"
- f = Find("одномерный")
- Print "Находим " & f & " позицию в списке = [" & j(f) & "]"
- End Sub
- Public Function Find&(Elm$)
- Dim max&, f&
- max = UBound(j)
- For f = 0 To Log(max - 1) / Log(2) + 1
- Find = (Find + max) \ 2
- If Elm > j(Find) Then
- Find = Find + 1
- ElseIf Elm < j(Find) Then max = Find - 1
- Else: Exit Function
- End If
- Next
- Find = -1
- End Function
- Private Sub qSort(ByVal low As Long, ByVal high As Long)
- Dim I As Long, L As Long, M As String, wsp As String
- I = low: L = high: M = j((I + L) \ 2)
- Do Until I > L: Do While j(I) < M: I = I + 1: Loop: Do While j(L) > M: L = L - 1: Loop
- If (I <= L) Then wsp = j(I): j(I) = j(L): j(L) = wsp: I = I + 1: L = L - 1
- Loop
- If low < L Then qSort low, L
- If I < high Then qSort I, high
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д