Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Пример 4. Условие задачи:

Изучение приемов программирования задач с использованием одномерных массивов | Пример 1. | Пример 2. |


Читайте также:
  1. IV. Практические наставления. Сила и значение веры, ветхозаветные примеры веры. (10.19-13.25).
  2. V. ПРИМЕРЫ ВЫПОЛНЕНИЯ ЗАДАНИЙ
  3. А) Примеры веры древних, до потопа (11,4-7)
  4. Автономные системы примеры /экодома
  5. Аддитивное и субтрактивное смешение цветов, примеры использования.
  6. Анализ данного примера
  7. Б) Примеры веры Авраама и Сарры (11,8-19)

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

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

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

Перебираются все элементы массива и производятся сравнения: первый элемент со вторым второй с третьим, и так далее до 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, то вывод осуществляется в одну строчку.


Дата добавления: 2015-07-11; просмотров: 50 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Пример 3.| Самостоятельная работа

mybiblioteka.su - 2015-2024 год. (0.006 сек.)