94
ОСНОВЫ АЛГОРИТМОВ И СТРУКТУР ДАННЫХ
06 12* 42 67*.
Соединяем упорядоченные последовательности длинны 2, получаем
06 12 44 94’ 18 42 55 67’.
Третье разделение и слияние приводят нас к желаемому результату
06 12 18 42 44 55 67 94.
Операция, которая однократно обрабатывает все множество данных,
называется фазой, а наименьший подпроцесс, который, повторяясь, образует
процесс сортировки, называется проходом или этапом. В приведенном выше
примере сортировка производится за три прохода, каждый проход состоит из
фазы разбиения и фазы слияния.
с
a
b
с
a
b
с
a
b
с
Фаза слияния
Фаза распределения
с
проход 1
проход 2
проход
n
Рис. 73. Фазы сортировки и слияния
Фазы разбиения не относятся к сортировке, поскольку они никак не
переставляют элементы; в каком-то смысле они непродуктивны, хотя и
составляют половину всех операций переписи. Их можно удалить, объединив
фазы разбиения и слияния. Вместо того чтобы сливать элементы в одну
последовательность, результат слияния сразу распределяют в два файла,
которые на следующем проходе будут входными. В отличие от двухфазного
слияния этот метод называется однофазным или сбалансированным слиянием.
Оно имеет явные преимущества, так как требует вдвое меньше операций
переписи.
Теперь перейдём к более детальному рассмотрению программы слияние.
Данные будем представлять в виде массива, обращение к которому происходит
строго последовательно.
1...,86,87,88,89,90,91,92,93,94,95 97,98,99,100,101,102,103,104,105,...106