42
правки
Изменения
Нет описания правки
buckets_maximum[i] = maximum ( buckets[index], arra[i])
for i = 0 to num_buckets - 1
buckets[i] = Bucketsort quicksort (buckets[i],min_bucktes[i],max_buckets[i])
intialize answer
for i = 0 to buckets_num - 1
</wikitex>
==Асимптотика==
Пусть <tex>n</tex> {{---}} количество элементов в массиве, <tex>k</tex> {{---}} основание системы исчисления и количество блоков для разбиения. <tex>pn_i </tex> {{---}} случайная величина, обозначающая количество разрядов элементов попавших в объекте<tex> i </tex>-ый карман.Тогда алгоритм "Bucket sort" в процессе работы сделает не более чем <Textex>O T(p n) </Textex> {{---}} время работы алгоритма карманной сортировки <Textex>T(n ) = \theta(n) + \sum\limits_{i = 1}^kO(n_i</tex> <tex> \log n_i)+ \theta(k)</Textex> итераций.Заметим, что в случае случайного распределения мат. ожидания количество элементов в каждом блоке <tex> M(n_i) = n/k</tex>. Следовательно Тоесть, в средним алгоритм карманной сортировки совершает если <Textex>O (n \sim k </Textex> <Textex>T(n) = \log_k theta(n)</Textex> действий. При этом на некотором множестве наборов Если, где <tex> k n = Oo(nk)</tex>, алгоритм отработает за линейное время.В худшем случае сортировка работает за <tex>O T(n^2) = \theta(k)</tex>.
==Примечания==
Сортировка быстро работает для равновероятного распределения значений разрядов объектов в заданной для них системе счисления.