Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DELPHI-ЛР-19.doc
Скачиваний:
0
Добавлен:
24.08.2019
Размер:
132.61 Кб
Скачать

3. Сортування одновимірного масиву

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

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

Пояснимо сутність цього методу на прикладі. Нехай нам потрібно впорядкувати за зростанням такий одновимірний масив із шести елементів (табл. 1, рядок 0):

Таблиця 1. Упорядкування масиву методом вибору

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

0

23

15

7

2

6

4

1

2

15

7

23

6

4

2

2

4

7

23

6

15

3

2

4

6

23

7

15

4

2

4

6

7

23

15

5

2

4

6

7

15

23

На першому кроці визначимо значення найменшого елемента в усьому масиві (a[4]=2) й обміняємо його зі значенням першого елемента. Одержуємо масив у рядку 1, в якому найменший елемент зайняв своє місце. На другому кроці визначимо значення найменшого елемента серед усіх елементів масиву, крім першого, (a[6]=4) й обміняємо його зі значенням другого елемента. Одержуємо масив у рядку 2, в якому перші 2 елементи зайняли своє місце. На третьому кроці визначимо значення найменшого елемента серед усіх елементів масиву, крім перших двох, (a[5] = 6) та обміняємо його зі значенням третього елемента. Одержуємо масив у рядку 3, в якому перші 3 елементи зайняли своє місце. Повторивши аналогічні дії ще 2 рази, одержуємо масив, впорядкований за зростанням.

Звертаємо вашу увагу: хоча масив має шість елементів, достатньо 5 разів знайти найменше значення елементів з ще невпорядкованої частини масиву й обміняти його місцями зі значенням першого з ще невпорядкованої частини масиву елемента. На останньому кроці не лише 5-й, а й 6-й елемент масиву займає своє місце у впорядкованій частині масиву, і таким чином увесь масив стає впорядкованим.

З пояснень суті цього методу з’ясовується зміст його назви: адже на кожному кроці вибирається найменший елемент серед ще невпорядкованої частини масиву, і його значення обмінюється зі значенням елемента, першого серед ще невпорядкованої частини масиву.

Відповідна процедура, в якій реалізується цей метод, виглядає так:

procedure TForm1.Button2Click (Sender: TObject);

var

a: array [1..10] of Integer;

i, j, min, nmin: Integer;

begin

for i:=1 to 10 do

a[i]:=StrToInt (Memo1.Lines[i-1]); {Введення елементів масиву}

for i:=1 to 9 do {Впорядкування елементів масиву}

begin

min:=a[i]; nmin:=i;

for j:=i+1 to 10 do

if a[j]<min then

begin

min:=a[j]; nmin:=j;

end;

a[nmin]:=a[i];

a[i]:=min;

end;

Memo2.Lines.Clear;

for i:=1 to 10 do {Виведення відсортованого масиву}

Memo2.Lines.Append (IntToStr(a[i]));

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]