Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программирование C++ 2014n.docx
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
887 Кб
Скачать
☆

9.8. Сортировка с помощью прямого выбора

Сортировка массива размером n в неубывающем (невозрастающем) порядке методом прямого выбора выполняется по следующему алгоритму.

  1. Выбирается элемент данного массива с минимальным (максимальным) значением (или ключом).

  2. Выбранный элемент и первый элемент меняются местами.

  3. Этот процесс повторяется с оставшимися n - 1 элементами, затем с n - 2 элементами и т.д. до тех пор, пока не останется один, самый большой (меньший) элемент.

Всего потребуется n - 1 раз выполнить указанную последовательность действий. В процессе сортировки будет увеличиваться отсортированная часть массива, а неотсортированная соответственно уменьшаться.

В отличие от сортировки вставками, когда а каждом шаге рассматривается только один очередной элемент исходного массива и все элементы отсортированной части, среди которых ищется место для вставки, при прямом выборе для поиска одного элемента с наименьшим (наибольшим) ключом просматриваются все элементы исходного массива и найденный элемент помещается как очередной в отсортированную часть массива.

Напомним, что во всех рассматриваемых методах сортировки мы не используем промежуточных массивов.

Схему сортировки методом прямого выбора проиллюстрируем на примере массива, рассмотренного в предыдущем пункте. Элементы, которые меняются местами на очередном шаге, выделены полужирны шрифтом, а минимальные элементы неотсортированной части, кроме того, отмечены звездочкой. Отсортированная часть подчеркнута.

Исходный массив:

22

-14

13

28

6

41

-5

18

0

35

6

-15*

1-й шаг

-15

-14*

13

28

6

41

-5

18

0

35

6

22

2-й шаг:

-15

-14

13

28

6

41

-5*

18

0

35

6

22

3-й шаг:

-15

-14

-5

28

6

41

13

18

0*

35

6

22

4-й шаг:

-15

-14

-5

0

6*

41

13

18

28

35

6

22

5-й шаг:

-15

-14

-5

0

6

41

13

18

28

35

6*

22

6-й шаг:

-15

-14

-5

0

6

6

13*

18

28

35

41

22

7-й шаг:

-15

-14

-5

0

6

6

13

18*

28

35

41

22

8-й шаг:

-15

-14

-5

0

6

6

13

18

28

35

41

22*

9-й шаг:

-15

-14

-5

0

6

6

13

18

22

35

41

28*

10-й шаг:

-15

-14

-5

0

6

6

13

18

22

28

41

35

11-й шаг:

-15

-14

-5

0

6

6

13

18

22

28

35

41