我知道如何使用基数排序排序整数。

但是,如何用它来进行排序串?或浮动数字?

有帮助吗?

解决方案

基数进行排序或任何其他分配的排序可能被用来排序浮点的数字,如果你忽略了一些特殊性,他们像无限,不是一个数值和两个不同的表示为零。 IEEE754-2008 浮点数二的表述,在兼容的排列顺序与整数的数字。因此,如果排除不是一个数字,并重新解释 floatdouble 作为 int32int64, 你可以直接适用的任何排序分配给他们。 编辑: 负浮点数需要特殊处理的(如指出的那样AShelly),因为他们的排序相反的排列顺序整数的数字。

与串,也是较为困难,因为他们变量的长度。其他种类的分类(桶种)可以使用并经常使用的字符串。几个起始字符串中使用对桶索引,那么任何对比的排序被用于种串的内部桶。

如果所有串有几乎相等的长度和/或某些技术被用于扩大的差异之间的串(如说明第6章 "快速:快建筑敏感的树上搜索现代的Cpu和Gpu"),则基数的排序可用,以及:分裂串的字符组(或更好,比特组)等的长度,重新诠释这些群体作为整数,并继续为,如果它是基排序,对于整数。

编辑: 所有种类的分布进行排序,保证正常工作只为ASCII strings.其他串的编码可能需要不同的排列顺序,或可能取决于"核对"参数的区域。

其他提示

是的,它是可能的。

Radix排序,对浮动数据进行排序 for floats。它使用了浮动对整数类型的浮点正确比较(一旦纠正了否定)。查看本文详细信息

对于字符串,您可以通过执行MSD Radix排序和确保在遇到空无效时停止降序来解决可变长度问题。请参阅在C ++中实现字符串

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top