Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

сиаод / 35-66 / 46. Карманная (блочная) сортировка

..pdf
Скачиваний:
106
Добавлен:
11.05.2015
Размер:
240.5 Кб
Скачать

46. Карманная (блочная) сортировка.

Блочная сортировка (Карманная сортировка) — алгоритм сортировки, в котором сортируемые элементы распределяются между конечным числом отдельных блоков (карманов, корзин) так, чтобы все элементы в каждом следующем по порядку блоке были всегда больше (или меньше), чем в предыдущем. Каждый блок затем сортируется отдельно, либо рекурсивно тем же методом, либо другим.

Затем элементы помещаются обратно в массив. Этот тип сортировки может обладать линейным временем исполнения.

Данный алгоритм требует знаний о природе сортируемых данных, выходящих за рамки функций "сравнить" и "поменять местами", достаточных для сортировки слиянием, сортировки пирамидой, быстрой сортировки, сортировки Шелла, сортировки вставкой.

Преимущества: относится к классу быстрых алгоритмов с линейным временем исполнения O(N) (на удачных входных данных).

Недостатки: сильно деградирует при большом количестве мало отличных элементов, или же на неудачной функции получения номера корзины по содержимому элемента.

Алгоритм BucketSort (A[1..n])

1.For i=1 to n do

2.Добавить A[i] к списку B([m*A[i]])

3.For i=0 to m-1 do

4.Сортировать список B(i)

5.A<-(B[0],B[1],…,B[m-1])

6.Return A