
- •Практическая работа № 8 алгоритмы сортировки элементов одномерных массивов
- •Краткие теоретические сведения
- •Сортировка методом пузырька.
- •Последовательность перемещения элементов внутри массива при применении метода пузырька
- •Сортировка методом извлечения
- •Контрольные вопросы
- •Индивидуальное задание
- •Варианты индивидуального задания
Практическая работа № 8 алгоритмы сортировки элементов одномерных массивов
Цель занятия:
1 Научиться сортировать одномерные массивы методом пузырька.
2 Научиться сортировать одномерные массивы методом извлечения.
Краткие теоретические сведения
Методы сортировки проще рассматривать на примере вектора-столбца. Наглядно видно, как более тяжёлые элементы опускаются в процессе сортировки вниз, а более лёгкие элементы поднимаются вверх.
Сортировка методом пузырька.
Суть данного метода сортировки состоит в том, что два элемента массива, стоящих рядом сравниваются между собой. Если элемент массива, имеющий меньший индекс, больше по величине, чем элемент массива, имеющий больший индекс, то они меняются местами. После последовательного сравнения всех элементов один (самый тяжёлый) становится на своё место. Из дальнейшего рассмотрения он исключается. Для сортировки всех элементов массива необходимо выполнить N – 1 итерацию.
Алгоритм, реализующий данный метод приведён на рисунке 8.1. В связи с тем, что сортировка элементов массивов производится по возрастанию, просмотр элементов начинается с последнего.
На вход массива (символ 2) подаются данные:
N – количество элементов массива
A[1..N] – элементы исходного массива
По умолчанию, индекс первого элемента равен 1.
Вспомогательной переменной I (счётчик числа итераций) присваиваем значение N (символ 3).
Вспомогательной переменной J (индекс рассматриваемого элемента) присваиваем значение 1 (символ 4).
Сравниваем два рядом стоящих элемента (символ 8). Если элемент массива, имеющий меньший номер, больше элемента массива, стоящего cправо от текущего элемента массива, то они меняются местами с помощью вспомогательной переменной K (символ 6). Переменная-счётчик цикла J увеличивается на единицу (символ 7) и рассматривается следующая пара элементов массива. Последовательно сравниваются все элементы массива (символ 8), и максимальный элемент из рассматриваемой группы, перемещается на своё место. Увеличивается значение счётчика итераций I на 1 (символ 9) и сравнивается полученное значение с количеством элементов массива (символ 10). Если значение меньше количества элементов массива, то переходим к следующей итерации (символ 4), в противном случае на устройстве вывода выводится отсортированный массив (символ 11).
Таблица трассировки алгоритма для первой итерации приведена в таблице 8.1.
Рисунок 8.1Алгоритм,
реализующий метод пузырька
Рисунок 8.1 Алгоритм, реализующий метод пузырька
Последовательность перемещения элементов внутри массива при применении метода пузырька
Таблица 8.1
A |
i |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 | ||||||||||||||||
j |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
| |||
83 |
1 |
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 |
15 | ||
15 |
2 |
83 |
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
37 |
37 |
37 |
37 |
37 |
37 |
24 |
24 |
22 |
22 |
22 |
22 |
22 |
| ||
37 |
3 |
|
83 |
55 |
|
|
|
|
|
|
|
|
|
|
|
|
55 |
55 |
55 |
55 |
55 |
55 |
24 |
37 |
22 |
24 |
24 |
24 |
24 |
|
| ||
55 |
4 |
|
|
83 |
83 |
|
|
|
|
|
|
|
|
|
|
|
69 |
69 |
69 |
69 |
60 |
24 |
55 |
22 |
37 |
37 |
37 |
37 |
|
|
| ||
97 |
5 |
|
|
|
97 |
69 |
|
|
|
|
|
|
|
|
|
|
83 |
79 |
79 |
60 |
24 |
60 |
22 |
50 |
44 |
44 |
44 |
|
|
|
| ||
69 |
6 |
|
|
|
|
97 |
94 |
|
|
|
|
|
|
|
|
|
79 |
83 |
60 |
24 |
69 |
22 |
50 |
44 |
50 |
50 |
|
|
|
|
| ||
94 |
7 |
|
|
|
|
|
97 |
79 |
|
|
|
|
|
|
|
|
86 |
60 |
24 |
79 |
22 |
50 |
44 |
55 |
55 |
|
|
|
|
|
| ||
79 |
8 |
|
|
|
|
|
|
97 |
86 |
|
|
|
|
|
|
|
60 |
24 |
83 |
22 |
50 |
44 |
60 |
60 |
|
|
|
|
|
|
| ||
86 |
9 |
|
|
|
|
|
|
|
97 |
60 |
|
|
|
|
|
|
24 |
86 |
22 |
50 |
44 |
61 |
61 |
|
|
|
|
|
|
|
| ||
60 |
10 |
|
|
|
|
|
|
|
|
97 |
24 |
|
|
|
|
|
87 |
22 |
50 |
44 |
61 |
69 |
|
|
|
|
|
|
|
|
| ||
24 |
11 |
|
|
|
|
|
|
|
|
|
97 |
87 |
|
|
|
|
22 |
50 |
44 |
61 |
79 |
|
|
|
|
|
|
|
|
|
| ||
87 |
12 |
|
|
|
|
|
|
|
|
|
|
97 |
22 |
|
|
|
50 |
44 |
61 |
83 |
|
|
|
|
|
|
|
|
|
|
| ||
22 |
13 |
|
|
|
|
|
|
|
|
|
|
|
97 |
50 |
|
|
44 |
61 |
86 |
|
|
|
|
|
|
|
|
|
|
|
| ||
50 |
14 |
|
|
|
|
|
|
|
|
|
|
|
|
97 |
44 |
|
61 |
87 |
|
|
|
|
|
|
|
|
|
|
|
|
| ||
44 |
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
61 |
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
61 |
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица трассировки алгоритма сортировки методом пузырька для первой итерации Таблица 8.2
N = 16 | ||||||||||||||||||||
Номера элементов массива | ||||||||||||||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | |||||
Элементы массива | ||||||||||||||||||||
83 |
15 |
37 |
55 |
97 |
69 |
94 |
79 |
86 |
60 |
24 |
87 |
22 |
50 |
44 |
61 | |||||
I |
I <> 0 |
J |
J <= I – 1 |
A[J] |
A[J + 1] |
A[J] > A[J + 1] |
B | |||||||||||||
16 |
да |
1 |
да |
83 |
15 |
да |
83 | |||||||||||||
|
|
|
|
15 |
83 |
|
| |||||||||||||
|
|
2 |
да |
83 |
37 |
да |
83 | |||||||||||||
|
|
|
|
37 |
83 |
|
| |||||||||||||
|
|
3 |
да |
83 |
55 |
да |
83 | |||||||||||||
|
|
|
|
55 |
83 |
|
| |||||||||||||
|
|
4 |
да |
83 |
97 |
нет |
| |||||||||||||
|
|
5 |
да |
97 |
69 |
да |
97 | |||||||||||||
|
|
|
|
69 |
97 |
|
| |||||||||||||
|
|
6 |
да |
97 |
94 |
да |
97 | |||||||||||||
|
|
|
|
94 |
97 |
|
| |||||||||||||
|
|
7 |
да |
97 |
79 |
да |
97 | |||||||||||||
|
|
|
|
|
|
|
| |||||||||||||
|
|
8 |
да |
97 |
86 |
да |
97 | |||||||||||||
|
|
|
|
|
|
|
| |||||||||||||
|
|
9 |
да |
97 |
60 |
да |
97 | |||||||||||||
|
|
|
|
60 |
97 |
|
| |||||||||||||
|
|
10 |
да |
97 |
24 |
да |
97 | |||||||||||||
|
|
|
|
24 |
97 |
|
| |||||||||||||
|
|
11 |
да |
97 |
87 |
да |
97 | |||||||||||||
|
|
|
|
87 |
97 |
|
| |||||||||||||
|
|
12 |
да |
97 |
22 |
да |
97 | |||||||||||||
|
|
|
|
22 |
97 |
|
| |||||||||||||
|
|
13 |
да |
97 |
50 |
да |
97 | |||||||||||||
|
|
|
|
50 |
97 |
|
| |||||||||||||
|
|
14 |
да |
97 |
44 |
да |
97 | |||||||||||||
|
|
|
|
44 |
97 |
|
| |||||||||||||
|
|
15 |
да |
97 |
61 |
да |
97 | |||||||||||||
|
|
|
|
61 |
97 |
|
| |||||||||||||
|
|
16 |
нет |
|
|
|
| |||||||||||||
15 |
да |
1 |
да |
15 |
37 |
нет |
|