Пример 4

Условие задачи:

Разработать алгоритм и написать программу сортировки одномерного массива по возрастанию.

Для решения задачи воспользуемся алгоритмом, который получил название «метод пузырька». Этот алгоритм заключается в следующем.

Перебираются все элементы массива и производятся сравнения: первый элемент со вторым второй с третьим, и так далее до n–го. Если значение некоторого элемента больше значения следующего элемента, то эти элементы меняются местами.

В результате последовательность может быть не отсортирована. Однако после первого прохода можно с уверенностью сказать, что наибольшее значение находится на своем месте — на правой границе массива. Выполнив еще один проход по n – 1 элементам, получим два упорядоченных значения. Если осуществить n – 1 проход, получим упорядоченный массив.

Фрагмент схемы алгоритма:

Форма Программа
Private Sub CommandButton1_Click() Dim x() As Single Dim n As Integer, Y As Single, i As Integer, j As Integer n = Val(TextBox1.Text) ReDim x(n) As Single For i = 1 To n ' Ввод массива x(i) = Cells(i) Next i For i = 2 To n ‘Проход For j = n To i Step -1 ‘Цикл для сравнения If x(j - 1) > x(j) Then Y = x(j - 1): x(j - 1) = x(j): x(j) = Y ‘Перестановка End If Next j Next i R = "" ‘Формируем строку для вывода For i = 1 To n R = R + Str(x(i)) + vbCrLf Next i TextBox2.Text = R ‘Вывод результата End Sub

Этот алгоритм можно реализуется с помощью двух циклов For — внутреннего и внешнего. Число повторений внешнего цикла на 1 меньше числа элементов массива (так как последовательность из одного значения проверять нет смысла). Число повторений внутреннего цикла последовательно сокращаться от n до 1.

Внешний цикл по i определяет количество проходов. Цикл по j создан для сравнения пар элементов массива. Сравниваются два элемента, расположенных рядом. Если XJ-1 > XJ, то осуществляется перестановка элементов местами. Для того чтобы не потерять значение одного из переставляемых элементов, вводится вспомогательная переменная Y, которая представляет собой буфер для хранения x[j-1].

Вывод результата осуществляется в текстовое поле TextBox2. В текстовое поле выводится строковая переменная R. Эта переменная предварительно формируется в цикле и представляет собой строку из значений элементов массива x(i) и символа перевода курсора на новую строку — vbCrLf. VbCrLf — константа языка Visual Basic. Для того чтобы в текстовое поле вывести текст, состоящий из нескольких строк, необходимо свойству MultiLine компонента TextBox2 присвоить значение True. Свойство MultiLine может принимать два значения: True и False. Если MultiLine = True, то возможен вывод в несколько строк. Если MultiLine = False, то вывод осуществляется в одну строчку.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: