|
|
|
В каких случаях Radix(поразрядная) сортировка будет лучшим выбором?Какая у неё сложность?
|
|||
|---|---|---|---|
|
#18+
Прочитал в нескольких местах про 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2018, 13:00 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=37&tid=2121683]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
2ms |
| others: | 42ms |
| total: | 189ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...