Back2dos сказал все это, я просто попытаюсь прояснить вопрос, который я считаю наиболее важным:
Radix sort может сортировать только действительные значения примитивов, которые содержатся в массиве, на основе их шаблонов двоичных цифр. В реальных сценариях разработки программного обеспечения этот случай встречается практически никогда . Чаще всего мы делаем сортировку массивов более сложных (не примитивных) структур данных, и иногда мы сортируем массивы индексов по другим объектам.
Теперь массив индексов для других объектов на самом деле является массивом примитивов, но порядок сортировки обеспечивается интерфейсом компаратора (и / или делегатом в C #), который сравнивает не индексы, а объекты, проиндексированные индексами. Таким образом, порядок сортировки не имеет абсолютно никакого отношения к порядку значений примитивов, и поэтому радикальная сортировка абсолютно бесполезна для этого сценария.
Пример:
У нас есть массив строк: [0] = "Mike", [1] = "Albert", [2] = "Zoro". Затем мы объявляем массив индексов для этих строк: [0] = 0, [1] = 1, [2] = 2. Затем мы сортируем массив индексов, передавая ему компаратор, который сравнивает не сами индексы, а фактические строки, на которые ссылаются эти индексы. После сортировки результирующий массив индексов будет выглядеть так: [0] = 1, [1] = 0, [2] = 2. Как вы можете видеть, этот порядок сортировки не имеет ничего общего с двоичными шаблонами значений, содержащихся в массиве, и, тем не менее, перебирая этот массив индексов и выбирая каждую соответствующую строку, мы посещаем строки в отсортированном порядке.