Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KV-03, Nadtochiy T. V..doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
808.45 Кб
Скачать

2. Алгоритм сортування №4 методу прямого вибору.

Загальна схема

  1. Значенню нижньої межі присвоюємо одиницю, а значенню верхньої — n.

  2. Головний цикл діє поки значення нижньої межі менше за значення верхньої:

а) номерам максимального й мінімального елементів масиву присвоюємо значення нижньої межі;

б) внутрішній цикл діє від номера, наступного нижній межі, до верхньої межі:

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

2) якщо поточний елемент більший за максимальний, то значенню номера максимального елемента присвоюється номер поточного елемента;

в) замінюємо місцями мінімальний елемент та елемент з номером нижньої межі;

г) якщо номер максимального елемента дорівнює значенню нижньої межі, то мінімальний елемент замінюємо місцями з елементом з номером верхньої межі; в іншому випадку елемент з номером верхньої межі замінюємо місцями з максимальним елементом;

д) значення нижньої межі збільшуємо на 1, а значення верхньої межі зменшуємо на 1.

А ­– даний масив;

L – нижня межа сортування;

R – верхня межа сортування;

I – лічильник внутрішнього циклу;

Imin – номер мінімального елемента;

Imax – номер максимального елемента;

N- кількість елементів масиву;

Маємо початковий масив:

A

1

2

3

4

5

6

7

8=N

11

3

8

18

6

5

2

10

L:=1; R:=n; {L=1; R=8}

  1. прохід

Умова: L<R => true => у зовнішній цикл заходимо:

Imin:=L; {Imin=1}

Imax:=L; {Imax=1}

Робимо прохід по і {від L+1 до R} комірках:

{i=2} Якщо A[i]<A[Imin] => true =>Imin:=I {Imin=2}

{i=3} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => false

{i=4} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => true =>

Imax:=I; {Imax=4}

{i=5} Якщо A[i]<A[Imin] => true =>Imin:=I {Imin=5}

{i=6} Якщо A[i]<A[Imin] => true =>Imin:=I {Imin=6}

{i=7} Якщо A[i]<A[Imin] => true =>Imin:=I {Imin=7}

{i=8} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => false

Міняємо елементи місцями:

B:=A[Imin]; A[Imin]:=A[L]; A[L]:=B; {A[1]=2; A[7]=11}

Якщо Imax=L => false =>міняємо елементи місцями:

B:=A[Imax]; A[Imax]:=A[R]; A[R]:=B; {A[4]=10; A[8]=18}

L:=L+1; R:=R-1; {L=2; R=7}

  1. прохід

A

1

2

3

4

5

6

7

8=N

2

3

8

10

6

5

11

18

{L=2; R=7}

Умова: L<R => true => у зовнішній цикл заходимо:

Imin:=L; {Imin=2}

Imax:=L; {Imax=2}

Робимо прохід по і {від L+1 до R} комірках:

{i=3} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => true =>Imax:=I {Imax=3}

{i=4} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => true =>Imax:=I {Imax=4}

{i=5} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => false

{i=6} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => false

{i=7} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => true =>Imax:=I {Imax=7}

{L=Imin — заміну елементів проводити не треба}я

Якщо Imax=L => false =>міняємо елементи місцями:

{Imax=R => заміну елементів проводити не треба}

L:=L+1; R:=R-1; {L=3; R=6}

Масив залишається без змін.

  1. прохід

A

1

2

3

4

5

6

7

8=N

2

3

8

10

6

5

11

18

{L=3; R=6}

Умова: L<R => true => у зовнішній цикл заходимо:

Imin:=L; {Imin=3}

Imax:=L; {Imax=3}

Робимо прохід по і {від L+1 до R} комірках:

{i=4} Якщо A[i]<A[Imin] => false => Якщо A[i]>A[Imax] => true => Imax:=I;

{Imax=4}

{i=5} Якщо A[i]<A[Imin] => true =>Imin:=I {Imin=5}

{i=6} Якщо A[i]<A[Imin] => true =>Imin:=I {Imin=6}

Міняємо елементи місцями:

B:=A[Imin]; A[Imin]:=A[L]; A[L]:=B; {A[3]=5; A[6]=8}

Якщо Imax=L => false =>міняємо елементи місцями:

B:=A[Imax]; A[Imax]:=A[R]; A[R]:=B; {A[4]=8; A[6]=10}

L:=L+1; R:=R-1; {L=4; R=5}

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