Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Візуал Бейсік 2010 Глінський.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.12 Mб
Скачать

§ 24. Впорядкування одновимірного масиву

Опрацювавши цей параграф, ви зможете виконувати складний пошук даних у масиві та впорядковувати елементи масиву за зростанням чи спаданням значень.

1. Застосування допоміжних змінних для розв’язування складніших задач пошуку даних у масиві за заданим критерієм. Розгляне­мо задачу, для розв’язування якої вводиться додаткова змінна flag,, яка сигналізує про настання деякої події.

Задача 1. У заданій числовій послідовності знайти третій додат­ний елемент або вивести повідомлення, що такого значення немає. Числову послідовність занести в структуру даних — масив.

Розв’язування. Розглянемо такі значення числової послідовнос­ті: -3, 5, 4, -5, 7, 9.

Третім елементом є число 4, а ось третім додатним є число 7. лже, очікувана відповідь — 7.

Розглянемо іншу числову послідовність: -3, 5, 4, -5, -7, -9.

У ній немає третього додатного елемента. Очікувана відповідь — повідомлення «Такого елемента немає».

Вважатимемо, що числову послідовність занесено у масив А. Розглянемо код розв’язування задачі 1.

Dim А(6) As Integer

Dim flag As Integer, і As Integer

A(1) = -3 : A(2) = 5 : A(3) = 4 : A(4) = -5 : A(5) = 7 : A(6) = -9

flag = 0

For і = 1 To 6

If A(i) > 0 Then flag = flag + 1

If flag = 3 Then b = A(i): Exit For

Next

If flag = 3 Then

<вивести b>

Else

<вивести "Такого елемента немає">

End If

Зверніть увагу, якщо третій додатний елемент знайдено, то переглядати масив далі немає сенсу. У цьому випадку для завчасного оду з циклу застосовано команду Exit For.

Завдання 1. Скласти код пошуку другого від’ємного елемента сиву (послідовності). У масиві А другий від’ємний елемент — число -5.

Завдання 2*. У масиві А другий від’ємний елемент (тут -5) по­сияйте місцями з другим елементом (за розташуванням). Другим розташуванням у масиві А є елемент зі значенням 5.

2. Упорядкування масиву методом обміну. Розглянемо невпорядкований набір з шести чисел: 3, 5, 6, 4, 2, 1. Ці числа введемо в од­новимірний масив А.

Задача 2. Упорядкувати елементи масиву А за зростанням (1, і 3, 4, 5, 6) або за спаданням (6, 5, 4, 3, 2, 1) значень.

Метод обміну. Складемо алгоритм упорядкування елементів масиву за зростанням методом обміну. Цей метод інакше називають методом «бульки».

У методі обміну спочатку розглядають перші два елементи ма­сиву. Якщо 1-й елемент більший, ніж 2-й, то їх міняють місцями далі 2-й елемент порівнюють з 3-м і, якщо потрібно, застосовують обмін, і т. д. Максимальний елемент (значення 6) розташується і кінці масиву, тобто там, де потрібно.

Після цього знову розглядають масив, але вже без останньої? елемента, і застосовують до його елементів метод обміну — другий за величиною елемент (значення 5) опиниться в масиві на передос­танній позиції і т. д.

Якщо масив має п елементів, то метод треба застосувати п - разів (кожного разу до меншої кількості елементів). Упорядковані елементи будуть нагромаджуватися в кінці масиву. Кількість порів­нянь і обмінів на кожному кроці утворює спадну арифметичну прог­ресію з елементами від п-1 до 1. Суму цих чисел — загальну кіль кість порівнянь — називають складністю алгоритму. Сума дорівнює (п2п) /2. Кажуть, що складність описаного алгоритму пропорційна до квадрата елементів, що в математиці позначають так: 0(n2).

Наведемо більш формальний словесний опис алгоритму розв’я­зування задачі 2. Нагадаємо, що елементів є шість (п=6).

1.j=1.

1.1. Порівняти 1-й елемент з 2-м. Якщо 1-й елемент більший, то поміняти їх місцями.

1.2. Порівняти 2-й елемент з 3-м. Якщо 2-й більший, то по­міняти їх місцями.

1. nj. Порівняти два останні елементи. Якщо передостанній більший, то поміняти їх місцями.

Після такого процесу найбільший елемент розташується в кінці масиву, але попередні елементи ще не будуть упорядковані. Тому тре ба застосувати описаний вище алгоритм до перших п - j елементів:

2. j = 2. Застосувати пункти 1.1—1.nj для п’яти перших елементів.

3. j = 3. Застосувати 1.1—1.nj для чотирьох перших елементів.

4. j = 4. Застосувати 1.1—1.nj для трьох перших елементів.

5. j = n-1. Застосувати 1.1—1.nj для двох перших елементів.

Переконайтеся, що описаному вище алгоритму відповідає код:

' Упорядкування чисел

Dim А(6) As Integer

Dim n, і, j. с As Integer

A(1 ) = 3: A(2) = 5 : A(3) = 6

A(4) = 4 : A(5) = 2 : A(6) = 1

n = 6

For j = 1 To n – 1

For i = 1 To n -j

If A(i) > A(i + 1) Then 'Обмін місцями

с = A(i)

A(i) = A(i + 1)

A(i + 1) = с

End If

Next і

'Виведемо проміжні результати

For і = 1 То n

<вивести у список або в рядок А(і); >

Next і

<вивести (перейти на новий рядок)>

MsgBox”Далі”)

Next j

Виконаємо програму. Розглянемо зовнішній цикл. Спочатку j=1. Після виконання внутрішнього циклу (для і від 1 до 5) масив буде таким: 3, 5, 4, 2, 1, 6. Далі матимемо:

Розділ 1. ОСНОВИ ПРОГРАМУВАННЯ 2