Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
44<br />
Сортировка объединением предусматривает получение одной последовательности<br />
данных, построенной по определенному правилу, из двух и более<br />
последовательностей, построенных по тому же правилу.<br />
Простейший из алгоритмов сортировки – алгоритм упорядочения методом<br />
«пузырька» (bubble sorting). В нем последовательно проверяются все<br />
пары данных сортируемого массива, и там, где первый член больше второго,<br />
выполняется перестановка.<br />
Сортировка методом выборки минимального или максимального чле<strong>на</strong><br />
(exchange sorting) заключается в последовательной выборке <strong>на</strong>именьшего из<br />
оставшихся членов списка. При этом перебор списка проводится более медленно,<br />
чем сравнение предыдущим методом. Еще медленнее работает метод<br />
вставки (insertion sorting), когда члены просматриваются по одному, и каждый<br />
новый член вставляется в подходящее место среди ранее упорядоченных<br />
данных. Этот алгоритм эффективен при малых массивах (до 50 – 100 членов),<br />
особенно, если они частично отсортированы. По методу Шелла (Shell sorting),<br />
в отличие от «пузырька», переставляются не соседние, а далеко отстоящие<br />
члены, что иногда повышает скорость в 1,5 раза.<br />
Примерно втрое большую скорость, чем сортировка методом «пузырька»,<br />
обеспечивает «быстрая сортировка» (quick sorting). При сортировке<br />
этим методом выбирается произвольный член, а остальной список сортируемых<br />
членов делится пополам, и каждый член одной половины сравнивается с<br />
чле<strong>на</strong>ми другой. Затем список вновь делится пополам и выполняется перестановка<br />
и т.д. Этот алгоритм положен в основу ряда библиотечных функций.<br />
void Swap (int &x, int &y) { int temp = x; x = y; y = temp; }<br />
void BubbleSort (int array[], int N) {<br />
for (int i=0; ii; ––j)<br />
if (array[j] < array[j–1]) Swap (array[j], array[j–1]);<br />
}<br />
void ExchangeSort (int array[], int N) {<br />
for (int i=0; i