powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / В каких случаях Radix(поразрядная) сортировка будет лучшим выбором?Какая у неё сложность?
1 сообщений из 1, страница 1 из 1
В каких случаях Radix(поразрядная) сортировка будет лучшим выбором?Какая у неё сложность?
    #39727185
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал в нескольких местах про Radix сортировку и не понял как всё же считается её сложность.

замечательный сайт:
https://www.geeksforgeeks.org/radix-sort/ What is the running time of Radix Sort?
Let there be d digits in input integers. Radix Sort takes O(d*(n+b)) time where b is the base for representing numbers, for example, for decimal system, b is 10. What is the value of d? If k is the maximum possible value, then d would be O(logb(k)). So overall time complexity is O((n+b) * logb(k)). Which looks more than the time complexity of comparison based sorting algorithms for a large k. Let us first limit k. Let k <= nc where c is a constant. In that case, the complexity becomes O(nLogb(n)). But it still doesn’t beat comparison based sorting algorithms.
What if we make value of b larger?. What should be the value of b to make the time complexity linear? If we set b as n, we get the time complexity as O(n). In other words, we can sort an array of integers with range from 1 to nc if the numbers are represented in base n (or every digit takes log2(n) bits).

Для обычных десятичных чисел b это 10. Что такое k и d я не понял. Видимо надо сначала понять, что значат эти буквы для того, чтобы сравнивать с другими алгоритмами.

http://algolab.valemak.com/radix тут пишут, что временная сложность от O(n) до O(n+k). Что такое k не уточняется

https://neerc.ifmo.ru/wiki/index.php?title=Цифровая_сортировка Сложность LSD-сортировки
Пусть m — количество разрядов, n — количество объектов, которые нужно отсортировать, T(n) — время работы устойчивой сортировки. Цифровая сортировка выполняет k итераций, на каждой из которой выполняется устойчивая сортировка и не более O(1) других операций. Следовательно время работы цифровой сортировки — O(kT(n)).

Рассмотрим отдельно случай сортировки чисел. Пусть в качестве аргумента сортировке передается массив, в котором содержатся n m-значных чисел, и каждая цифра может принимать значения от 0 до k−1. Тогда цифровая сортировка позволяет отсортировать данный массив за время O(m(n+k)), если устойчивая сортировка имеет время работы O(n+k). Если k небольшое, то оптимально выбирать в качестве устойчивой сортировки сортировку подсчетом.

Если количество разрядов — константа, а k=O(n), то сложность цифровой сортировки составляет O(n), то есть она линейно зависит от количества сортируемых чисел.

Тут я не понял зачем берётся время устойчивой сортировки.

ещё непонятна фраза:
авторЕсли количество разрядов — константа, а k=O(n),
авторкаждая цифра может принимать значения от 0 до k−1
К-это вроде как количество цифр. Как оно может быть равно O(n)
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / В каких случаях Radix(поразрядная) сортировка будет лучшим выбором?Какая у неё сложность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]