13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!