Сортировка массива чисел по возрастанию - VB (59711)
Формулировка задачи:
Дан. Следующий код. Но его надо изменить так, чтобы он сравнивал не просто все подряд числа, а отсортировывал только то, что осталось от массива чисел. Пример на скрине.
Решение задачи: «Сортировка массива чисел по возрастанию»
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
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