4
A
回答
4
基数排序或任何其他分布排序可用于排序浮点数,如果您忽略它们的某些特性,如无穷大,非数值和两个不同的零表示。 IEEE 754-2008浮点数具有二进制表示形式,与整数排序顺序兼容。因此,如果您排除非数字并重新解释float
或double
为int32
或int64
,您可以直接对其应用任何分配排序。 编辑:负浮点数需要特殊处理(由AShelly指出),因为它们的排序顺序与整数排序顺序相反。
对于字符串,由于它们的可变长度而变得更加困难。其他类型的分配排序(桶排序)可以被使用并且经常用于字符串。该字符串的几个起始字符用于存储桶索引,然后使用任何比较排序来对该存储桶内的字符串进行排序。
如果所有字符串具有几乎相等的长度和/或某些技术被用于扩增串之间的差异,然后基数排序可以被用作孔(比如在"FAST: Fast Architecture Sensitive Tree Search on Modern CPUs and GPUs" 6章中的说明):所述字符串分割字符组(或者更好),将这些组重新解释为整数,并继续,就像对整数进行基数排序一样。
编辑:各种分配排序保证只适用于ASCII字符串。其他字符串编码可能需要不同的排序顺序,或者可能取决于语言环境的“collate”参数。
3
是的,这是可能的。
请参阅Radix Sort, Sorting a float data浮标。它使用浮点数转换为整数类型比较正确的事实(一旦消极被纠正)。有关详细信息,请参阅this article
对于字符串,可以通过执行MSD基数排序来解决可变长度问题,并确保在遇到空值时停止下降。请参阅Radix sort implemented in c++ for string。
相关问题
- 1. 使用合并排序对n个字符串进行排序
- 2. 排序分配字符串
- 3. 如何使用数字排序对varchar列进行排序
- 4. 对字符串数组进行排序
- 5. 如何使用javascript对字符串数字进行排序
- 6. 基于匹配字符串对字符串数组进行排序
- 7. 如何对字母数字字符串值进行排序?
- 8. 使用快速排序对C中的字符串进行排序
- 9. 使用takeOrdered对字符串进行降序排序
- 10. 如何使用nspredicate对非英文字符串进行排序?
- 11. 如何对半数字字符串进行排序?
- 12. 用字符串进行泡泡排序
- 13. 如何使用Bubble排序对我的JTable进行排序?
- 14. 如何使用稳定排序对DataGrid进行排序?
- 15. 如何使用多个排序条件对ArrayList进行排序?
- 16. 如何使用排序集中的分数对列表进行排序
- 17. 对字符串中的字符进行排序的C程序
- 18. 排序使用基数排序
- 19. 按升序对数字进行排序
- 20. 按降序对数字进行排序
- 21. 如何对字符串中的字符进行排序?
- 22. 使用自定义排序顺序在Unix中对字母数字字符串进行排序
- 23. 使用stdlib的qsort()对字符串数组进行排序
- 24. 基于字段对ArrayList进行排序?
- 25. 如何对UTF-8字符串数组进行排序?
- 26. 如何对字符串数组进行冒泡排序?
- 27. 如何按日期对$ _POST数组进行排序字符串
- 28. 基于字符串属性按字母顺序对数组进行排序
- 29. 用排序数字排序
- 30. 如何使用linux shell排序使用多字符分隔符对文件进行排序?
@NiklasB .:基数排序是一种非比较排序。 – Groo 2012-03-09 19:16:57
@格罗:哦。在这种情况下,我的评论是无关紧要的:) – 2012-03-09 19:25:21