Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / ооп / 4_кол / К курсовой / Методи побудови алгоритмів та їх аналіз. Караванова Т.П. / Інформатика_1 (методи побудови алгоритмівта та їх аналіз).doc
Скачиваний:
89
Добавлен:
30.05.2020
Размер:
2.5 Mб
Скачать

Прямі методи сортування Сортування вибором

Цей алгоритм найчастіше розглядається в курсі «Основ ал-горитмізації та програмування» як класичний.

150

Нагадаємо його. Якщо спробувати навести порядок у карт-ках, на яких написані деякі числа, то, напевно, дійдемо такого висновку. Спочатку треба знайти мінімальний елемент у всьо-му заданому масиві і поміняти його місцями з елементом, який поки що стоїть на першому місці. Це треба зробити, бо саме на цьому місці повинен стояти знайдений мінімальний елемент. Тепер уже перший елемент знаходиться на своему місці, і мож-на його закрити, не розглядаючи далі. Масив, який маємо від-сортувати, фактично зменшився на один елемент (перший). 3 новим масивом виконаємо ті самі ді'і: знайдемо в ньому міні-мальний елемент і поміняємо його місцями з першим відкри-тим елементом (насправді він є другим елементом у заданому масиві). Так будемо продовжувати доти, доки на останньому кроці не залишаться два останні елементи. Якщо необхідно, поміняємо і їх місцями. На цьому сортування завершено.

Розглянутий алгоритм можна представити в такій словесній формі:

  1. розглядаємо масив від елемента з номером 1 до елемента з номером п;

  2. у масиві, який розглядається, вибираємо елемент з най-меншим значениям;

  3. визначений у п. 2 елемент міняємо місцями з першим еле­ментом масиву, який розглядається;

  1. зменшуємо розмірність масиву, що розглядається, пе­реметивши його початок на наступний елемент;

  2. пункти 2-4 виконуемо для всіх елементів масиву від 1 до (л - 1).

Розглянемо масив 44, 55, 12, 42, 94, 18, 06, 67 і застосуємо до нього описаний алгоритм, подавши його у вигляді такої таб-лиці (табл. 15).

Таблица 15

І

1

44

55

12

42

94

18

06

67

2

06

55

12

42

94

18

44

67

3

06

12

55

42

94

18

44

67

4

06

12

18

42

94

55

44

67

5

06

12

18

42

94

00

44

67

6

06

12

18

42

44

55

94

67

7

06

12

18

42

44

55

94

67

8

06

12

18

42

44

55

67

94

151

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

Цей алгоритм у вигляді програми буде таким:

for i := 1 to n - 1 do begin

min :=a[i]; k :=i; forj :=i + 1 ton do if a[j] < min then begin

I min :=a[j]; k:=j end; с := a[i]; a[i] := a[k]; a[k] := c; end;

Для того щоб описаний алгоритм виконував сортування ма­сиву за спаданиям, треба логічний вираз a[j] < min замінити на a[j] > min або замінити (при бажанні) ідентифікатор min на іден-тифікатор max.