146
правок
Изменения
Нет описания правки
'''Карманная сортировка''' (англ. ''Bucket sort'') {{---}} алгоритм сортировки, основанный на предположении о равномерном распределении входных данных.
== Алгоритм сортировки ==
[[Файл:Bucket-sort-example1.jpg|right|300px|thumb|Пример работы рекурсивного Bucketsort.]]
=== Принцип работы ===
=== Реализация ===
Существует несколько разных реализаций карманной сортировки.
Рассмотрим рекурсивную и нерекурсивную реализации.
==== Рекурсивный bucket sort ====
Рассмотрим код работы рекурсивной реализации карманной сортировки, на . На вход которой подаются вещественные числа. Bucketsort array bucketSort (array,min_element,max_element) '''if (''' array.length < 2 || '''or''' min_element == max_element ) '''return ''' array; initialize buckets <- new array of n empty lists initialize buckets_minimum initialize buckets_maximum
range = max_element - min_element;
'''for''' i = 0 '''to''' array.length - 1
'''for''' i = 0 '''to''' num_buckets - 1
'''for''' i = 0 '''to''' num_buckets - 1
==== Нерекурсивная реализация ====
min_element = Infinum
max_element = -Infinum
'''for''' i = 0 '''to''' array.length - 1
min_element = Min'''minimum'''(min_element, array[i]) max_element = Max'''maximum'''(max_element, array[i])
range = max_element - min_element;
'''for''' i = 0 '''to''' array.length - 1
'''for''' i = 0 '''to''' num_buckets - 1
'''for''' i = 0 '''to''' num_buckets - 1
==Асимптотика==
<tex> n_i </tex> {{---}} случайная величина, обозначающая количество элементов попавших в <tex> i </tex>-ый карман.
<tex> T(n) = \thetaTheta(n) + \sum\limits_{i = 1}^k O(n_i</tex> <tex> \log n_i) + \thetaTheta(k)</tex>, где <tex> T(n) </tex> время работы алгоритма карманной сортировки.
<tex> E[n_i] = n / k </tex>
Если, <tex> n = o(k) \Rightarrow E[T(n)] = \thetaTheta(k)</tex>
Из приведенных выше формул, видно, что в среднем "карманная сортировка" работает за линейное время.
==СсылкиИсточники информации==* [http://en.wikipedia.org/wiki/Bucket_sortWikipedia - Bucket_sort]
* [http://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&ved=0CI0BEBYwCQ&url=http%3A%2F%2Fcs.iupui.edu%2F~xkzou%2Fteaching%2FCS580%2FSortinginlineartime.ppt&ei=d7fUT8WWIs3S4QSkkPT-Ag&usg=AFQjCNEUbmlVNhSgrJKV9-QjPBwU6U0obQ&sig2=3yaysrpuwVjmyhjBCpyBeQ Презентация о линейных сортировках].