Радикальная сортировка или любая другая сортировка распределения может использоваться для сортировки чисел с плавающей запятой, если вы игнорируете некоторые их особенности, такие как бесконечность, значения не числа и два разных представления нуля. IEEE 754-2008 числа с плавающей запятой имеют двоичные представления, совместимые в порядке сортировки с целыми числами. Таким образом, если вы исключите не-числа и повторно интерпретируете float
или double
как int32
или int64
, вы можете напрямую применить к ним любую сортировку распределения. Редактировать: Отрицательные числа с плавающей запятой нуждаются в особой обработке (как указал А.Шелли), потому что их порядок сортировки противоположен порядку сортировки целых чисел.
Со строками сложнее из-за их переменной длины. Можно использовать другой тип сортировки распределения (bucket sort) и часто используется для строк. Несколько начальных символов строки используются для индексации сегментов, затем для сортировки строк внутри сегментов используется любая сравнительная сортировка.
Если все строки имеют почти одинаковую длину и / или используется какой-либо метод для усиления различий между строками (как описано в главе 6 «БЫСТРЫЙ: Быстрый поиск в архитектуре, чувствительный к дереву, на современных ЦП и ГП» ) , тогда можно также использовать основную сортировку: разбить строку на группы символов (или, что лучше, на группы битов) равной длины, переосмыслить эти группы как целые числа и продолжить, как если бы это была сортировка по основанию для целых чисел.
Редактировать: Все виды сортировки при распределении гарантированно будут работать правильно только для строк ASCII. Другие строковые кодировки могут требовать другого порядка сортировки или могут зависеть от параметра "collate" локали.