Оформить данную сортировку в виде процедуры(функции)
Пузырьковая сортировка Сортировка простыми обменами, сортиро́вка пузырько́м (англ. bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяются более эффективные алгоритмы сортировки. В то же время метод сортировки обменами лежит в основе некоторых более совершенных алгоритмов. Алгоритм состоит в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма. Итак, главной особенностью алгоритма является обмен. Алгоритм основан на сравнении и смене места для 2-х соседних элементов массива. Процесс продолжается до тех пор, пока не будут упорядочены все элементы. Если задан одномерный массив Х из N элементов, то последовательно упорядочиваются например Х1 и Х2, Х3 и Х4,…, Хn-1 и Хn. В итоге максимальное (минимальное) значение переместится в Хn. Затем эту процедуру повторяют до Хn-1 и т.д., вплоть до цепочки из двух элементов Х1 и Х2. В этом методе мы повторяем проходы по массиву, сдвигая каждый раз наименьший элемент оставшейся последовательности к левому концу массива. Если мы будем рассматривать массивы как вертикальные, а не горизонтальные построения, то элементы можно интерпретировать как пузырьки в чане с водой, причем вес каждого соответствует его ключу. В этом случае при каждом проходе один пузырек как бы поднимается до уровня, соответствующего его весу. Рассмотрим применение метода на начальном массиве с ключами 44 55 12 42 94 18 6 67. Запишем массив вертикально.
I 1 2 3 4 5 6 7 8 1 44 06 06 06 06 06 06 06 2 55 44 12 12 12 12 12 12 3 12 55 44 18 18 18 18 18 4 42 12 55 44 42 42 42 42 5 94 42 18 55 44 44 44 44 6 18 94 42 42 55 55 55 55 7 06 18 94 67 67 67 67 67 8 67 67 67 94 94 94 94 94 Обозначения: Пузырек в массиве обозначен серым фоном; Только всплывший пузырек обозначен голубым фоном. Число сравнений С=(n^2-n)/2; число перестановок M(мин)=0; M(мах)=3*(n^2-n)/2; M(ср)=3*(n^2-n)/4; Представим этот алгоритм в другом изложении: Пример №1 Сортировка массивов методом выбора (выделения) осуществляется таким образом: Слева направо поочерёдно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих соседних элемента и так далее до конца массива. После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент ("всплыл" первый "пузырёк"). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-ого элемента. И так далее. Всего требуется n-1 проход. Рассмотрим схему алгоритма сортировки методом прямого обмена по неубыванию.
Пример №2
Пример работы алгоритма
Возьмём массив с числами «5 1 4 2 8» и отсортируем значения по возрастанию, используя сортировку пузырьком. Выделены те элементы, которые сравниваются на данном этапе.
Первый проход:
(5 1 4 2 8) (1 5 4 2 8), Здесь алгоритм сравнивает два первых элемента и меняет их местами.
(1 5 4 2 8) (1 4 5 2 8), Меняет местами, так как 5 > 4
(1 4 5 2 8) (1 4 2 5 8), Меняет местами, так как 5 > 2
(1 4 2 5 8) (1 4 2 5 8), Теперь, ввиду того, что элементы стоят на своих местах (8 > 5), алгоритм не меняет их местами.
Второй проход:
(1 4 2 5 8) (1 4 2 5 8)
(1 4 2 5 8) (1 2 4 5 8), Меняет местами, так как 4 > 2
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
Теперь массив полностью отсортирован, но алгоритм не знает так ли это. Поэтому ему необходимо сделать полный проход и определить, что перестановок элементов не было.
Третий проход:
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
Теперь массив отсортирован и алгоритм может быть завершён.
Представлена блок схема сортировки элементов массива
Нет
ДА
НЕТ НЕТ НЕТ
Для сдачи зачета по данной сортировки выполнить: Задание
Варианты заданий(по журнальному списку) Произвести сортировку массива обменом. Предварительно выделите:
Необходимо(Дома):
В аудитории оформить данную сортировку в виде процедуры(функции) ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|