Сортировка Хана — различия между версиями
Строка 21: | Строка 21: | ||
|id=def3. | |id=def3. | ||
|definition= | |definition= | ||
− | Для множества <tex>S</tex> определим | + | Для множества <tex>S</tex> определим |
min(<tex>S</tex>) = min{<tex>a</tex>|<tex>a</tex> принадлежит <tex>a</tex>} | min(<tex>S</tex>) = min{<tex>a</tex>|<tex>a</tex> принадлежит <tex>a</tex>} | ||
max(<tex>S</tex>) = max{<tex>a</tex>|<tex>a</tex> принадлежит <tex>a</tex>} | max(<tex>S</tex>) = max{<tex>a</tex>|<tex>a</tex> принадлежит <tex>a</tex>} | ||
Набор <tex>S1</tex> < <tex>S2</tex> если max(<tex>S1</tex>) <= min(<tex>S2</tex>) | Набор <tex>S1</tex> < <tex>S2</tex> если max(<tex>S1</tex>) <= min(<tex>S2</tex>) | ||
}} | }} |
Версия 21:49, 10 июня 2012
Сортировка Хана (Yijie Han) — сложный алгоритм сортировки целых чисел со сложностью
, где — количество элементов для сортировки.Алгоритм
Алгоритм построен на основе экспоненциального поискового дерева (далее - Э.П.дерево) Андерсона (Andersson's exponential search tree). Сортировка происходит за счет вставки целых чисел в Э.П.дерево.
Andersson's exponential search tree
Э.П.дерево с
листьями состоит из корня и (0< <1) Э.П.поддеревьев, в каждом из которых листьев; каждое Э.П.поддерево является сыном корня . В этом дереве уровней. При нарушении баланса дерева, необходимо балансирование, которое требует времени при вставленных целых числах. Такое время достигается за счет вставки чисел группами, а не по одиночке, как изначально предлагает Андерссон.Необходимая информация
Определение: |
Контейнер - объект определенного типа, содержащий обрабатываемый элемент. Например __int32, __int64, и т.д. |
Определение: |
Алгоритм сортирующий | целых чисел из множества {0, 1, ..., - 1} называется консервативным, если длина контейнера (число бит в контейнере), является Если длина больше, то алгоритм не консервативный.
Определение: |
Для множества | определим min( ) = min{