
- •Упорядкування вставлянням
- •Упорядкування вибором
- •Упорядкування обміном
- •Порівняння прямих методів упорядкування
- •Бінарний пошук
- •Приклади розв'язування задач
- •Розв’язування.
- •Заповнити тривимірний масив цілих чисел за правилом: елементи на гранях рівні 1, всі інші 0 (за схематичним поданням).
- •Розв’язування.
Упорядкування обміном
Принцип методу:
Зліва направо по черзі порівнюються два сусідніх елементи, і якщо їх взаємне розміщення не відповідає критерію упорядкування, то вони переставляються місцями. Потім беруться два наступні сусідні елементи і так далі до кінця масиву.
Після одного такого перегляду на останній n-й позиції масиву буде знаходитися найбільший елемент. Оскільки найбільший елемент уже знаходиться на своїй останній позиції, то другий перегляд виконується до n-1–го елемента. І так далі. Всього потрібно n-1 перегляд.
Застосуємо метод обміном для упорядкування масиву 4 0 7 5 1 3 :
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
1: |
4 |
0 |
7 |
5 |
1 |
3 |
|
4: |
0 |
1 |
3 |
4 |
5 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
4 |
5 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
2: |
0 |
4 |
5 |
1 |
3 |
7 |
|
5: |
0 |
1 |
3 |
4 |
5 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
|
6: |
1 |
2 |
3 |
4 |
5 |
6 |
3: |
0 |
4 |
1 |
3 |
5 |
7 |
|
Результат |
0 |
1 |
3 |
4 |
5 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
4 |
|
|
|
|
|
|
|
|
|
|
Отже,
const MaxN = 20; type TElement = Real; TMas = array[1..MaxN] of TElement; var A : TMas; N, Nmin, i, j : Integer; T :TElement; begin Write('Введіть кількість елементів масиву – '); ReadLn(N); for i := 1 to N do begin Write('A[', i, ']='); ReadLn(A[i]);end; WriteLn('Масив до упорядкування:'); for i := 1 to N do Write(A[i], ' '); WriteLn; for i := n downto 2 do for j := 1 to i –1 do if A[j] > A[j+1] then begin T := A[j]; A[j] := A[j+1]; A[j+1] := T; end; WriteLn('Упорядкуваний масив:'); for i := 1 to N do Write(A[i],' '); WriteLn; end. |