Сортировка методом простого включения




Сортировка методом простого обмена

 

Сортировка методом простого обмена может быть применена для любого массива. Этот метод заключается в последовательных просмотрах массива от начала к концу и обмене местами соседних элементов, расположенных «неправильно», то есть таких, что i<j, а А[i]>А[j].

Просмотрим весь массив. Начинаем с первой пары элементов А[1] и А[2]. Если первый элемент этой пары больше второго, то меняем их местами, иначе оставляем без изменения. Затем берем вторую пару А[2] и А[3], и если А[2] > А[3], то меняем их местами и так далее. На первом шаге будут просмотрены все пары элементов массива А[i] и А[i+1] для i от 1 до n-1. В результате максимальный элемент массива переместиться в конец массива. Поскольку самый большой элемент находится на своём месте, рассмотрим часть массива без него, то есть с первого до (n-1)-элемента. Будем повторять предыдущие действия до тех пор, пока количество элементов в текущей части не уменьшится до 2. В этом случае необходимо выполнить последнее сравнение и упорядочить последние два элемента.

При сортировке выполняется (n-1)-просмотр.

Пример Отсортируем по возрастанию методом простого обмена массив из 5 элементов: 5 1 8 4 9.

Длина текущей части массива – n-k+1, где k – номер просмотра, i – номер проверяемой пары, номер последней пары – n-k.

 
 

Первый просмотр: рассматривается весь массив.

Второй просмотр: рассматриваем часть массива с первого до четвертого элемента.

 
 

Третий просмотр: рассматриваем часть массива с первого до третьего элемента.

 
 

Четвертый просмотр: рассматриваем часть массива из первого и второго элемента.

Итак, наш массив отсортирован по возрастанию элементов методом простого обмена. Этот метод также называют методом «пузырька». Название это происходит от образной интерпретации, при которой в процессе выполнения сортировки элементы с заданным свойством всплывают на поверхность.

 

Пусть k – Номер просмотра (изменяется от 1 до n-1),

i – номер рассматриваемой пары,

t – промежуточная переменная для перестановки местами элементов, тогда фрагмент программы будет выглядеть так:

Begin

For k:=1 to n-1 Do {цикл по номеру просмотра}

For i:=1 to n-k Do

If A[i]>A[i+1] Then

Begin {перестановка элементов}

t:=A[i];

A[i]:=A[i+1];

A[i+1]:=t;

End;

End;

Сортировка методом простого включения

 

Сортировка методом простого включения, так же, как и сортировка методом простого выбора, обычно применяется для массивов, не содержащих повторяющихся элементов.

Сортировка этим методом производится последовательно шаг за шагом. На k-ом шаге считается, что часть массива, содержащие первые (k-1) элемент уже упорядочена, то есть A[1]≤A[2]≤A[3]≤…≤A[k-1]. Далее надо взять k-ый элемент и подобрать для него место в отсортированной части массива такое, чтобы после его вставки упорядоченность не нарушилась, то есть надо найти такое j (1≤ j ≤ k-1), что A[j] ≤ A[k] ≤ A[j+1]. Затем надо вставить элемент A[k] на найденное место.

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

Рассмотрим этот процесс на примере:

Рассматриваем часть массива из одного элемента (10). Нужно вставить в нее второй элемент массива (5), так, чтобы упорядоченность сохранилась. Так как 5<10, вставляем 5 на первое место. Отсортированная часть массива содержит два элемента.

Возьмем третий элемент массива (2) и подберем для него место в упорядоченной части массива.2<5, 2<10, следовательно его нужно поставить на нужное место.

Следующий элемент – 7. Он записывается в упорядоченную часть массива на третье место, так как 5<7, но 7<10.

Далее, действуя аналогичным образом, определяем, что 9 необходимо записать после 7 и до 10.

Определяем место для предпоследнего элемента. Место числа 4 – второе, так как 2<4, но 4<5.

Осталось подобрать подходящее место для последнего элемента. Массив отсортирован полностью.

 

For k:=2 To n Do {так как начинаем сортировку с поиска подходящего места для А[2]}

Begin

х:=A[k];

“вставить х на подходящее место в A[1]…A[k]”

End.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-01-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: