Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ.doc
Скачиваний:
23
Добавлен:
28.10.2018
Размер:
543.74 Кб
Скачать
  1. Робота з одновимірними та багатовимірними масивами.

Масив задає спосіб організації даних. Масивом називають впорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмір масиву.

Масив називається одновимірним, якщо для задання  місцеположення елемента в масиві необхідно вказати значення лише одного індексу.

Це означає, що наш масив є ще й одновимірним.

Індексом називається порядковий номер елемента масиву.

Масив називається двовимірним, якщо для задання  місцеположення елемента в масиві необхідно вказати значення двох індексів.

Запам'ятайте, що у двовимірних масивах перший індекс завжди вказує на номер рядка, а другий - на номер стовпчика в цьому рядку!

  1. Алгоритми обробки масивів. Упорядкування і пошук даних.

В програмуванні масив (англ. array) — одна з найпростіших структур даних, сукупність елементів одного типу даних, впорядкованих заіндексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві.

Масив може бути одновимірним (вектором), та багатовимірним (наприклад, двовимірною таблицею), тобто таким, де індексом є не одне число, а кортеж (сукупність) з декількох чисел, кількість яких збігається з розмірністю масива.

У переважній більшості мов програмування масив є стандартною вбудованою структурою даних.

Алгоритм упорядкування елементів одновимірного масиву.

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

 

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

 Метод обміну.

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

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

 

Наведемо словесний опис алгоритму розв'язування задачі

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

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

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

3.   Повторити пункти 1-2 для п'яти перших елементів.

4.   Повторити пункти 1-2 для чотирьох перших елементів.

5.   Повторити пункти 1-2 для трьох перших елементів.

6.   Повторити пункт 1 для двох перших елементів.

 

   Розгляньте блок-схему даного алгоритму та його запис на навчальній алгоритмічній мові (НАМ) та мові Паскаль.

 Запишемо даний алгоритм.

Тут змінні R, x[i] — дійсного типу, а змінна і — цілого типу.

 

програма sort_bubl;

змінні    і:   цілі;

            R:   дійсні;

            x:   масив[1..5]   із  дійсні;

початок

        для і:=1 до 5 виконати

        початок

            вивести(' Введіть ',і,'-й елемент');

            ввести(х[і])

        кінець;

  для j:=1  до 4  виконати

               для  i:=1  до  5-j   виконати

                    якщо x[i]> x[i+1] то

                    початок

                        R:=x[i];

                        x[i]:= x[i+1];

                        x[i+1]:=R

                   кінець;

        для  i:=1  до 5  виконати

        вивести  (x [i])

кінець.

 

 

Перекладемо цей алгоритм мовою Паскаль.

program Sort;

const n = 7;

а : array [l..n] of integer = (75, 34, 18, 56, 45, 64, 23);

var і, j : integer;

dop : integer;

begin

for j := 1 to n - 1 do

for і := 1 to n - j do

if a[i] > a[i+1] then

begin

dop := a[i+1]; a[i+1] := a[i]; a[i] := dop

   end;

writeln('виводимо результати');

for і := 1 to n do write(a[i] : 4)

end.

Інші методи впорядкування масивів.

Окрім алгоритму впорядкування масиву методом обміну, є чимало інших методів упоряд кування. Найпростіший (але найтриваліший) — цеметод мінімальних елементів. Цей метод полягає в такому: розглядають увесь масив, визначають мінімальний елемент та його номер і міняють його місцями з першим елементом. Розглядають масив без першого елемента. Застосовують до нього метод і так n -1 разів. Упорядковані елементи будуть поступово переноситися на початок масиву.

Інший метод упорядкування — метод вставки. У цьому випадку розглядають увесь масив, і перший елемент порівнюють з іншими, доки не знайдуть меншого від нього. Перша позиція в масиві стає позицією вставки. Знайдений менший елемент і його індекс запам'ятовують. Усі елементи масиву, починаючи від позиції вставки до того, що передує знайденому, зміщують праворуч. Значення знайденого елемента записують у позицію вставки і порівнюють його з елементами, що залишилися. Якщо буде виявлено ще менший елемент, то повторюють процедуру вставки і так доти, доки не дійдуть до кінця масиву — лише після цього перший елемент буде на місці. Розглядають масив без першого елемента і застосовують до нього описаний метод і т.п.

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

Лінійний пошук - алгоритм послідовного пошуку знаходження заданого значення довільної функції на деякому її відрізку. Цей алгоритм є найпростішим алгоритмом пошуку і на відміну, наприклад, від двійкового пошуку, не накладає жодних обмежень на функцію і має просту реалізацію. Пошук значення функції здійснюється простим порівнянням чергового розглянутого значення (як правило пошук відбувається зліва направо, тобто від менших значень аргументу до більших) і, якщо значення збігаються (з тією або іншою точністю), то пошук вважається завершеним.

Даний алгоритм порівнює кожен елемент масиву з певним ключем.