因为我无法在java上使用整数值中的示例对String数组进行编码。 请有人解释一下。 Java会更好。
答案 0 :(得分:0)
根据Wikipedia article,算法只能对正整数列表进行排序,在最好的情况下需要额外的O(n ^ 2)空间。
如果要对带有珠子排序的字符串列表进行排序,则需要某种方法将这些字符串转换为正整数,以使数字的关系与字符串之间的关系完全匹配。因此,如果您有字符串“ABC”,“JKL”和“XYZ”,那么您为“XYZ”生成的数字必须大于您为“JKL”生成的数字,该数字必须大于“JKL”的数字。字符串“ABC”。
如果你的字符串都是四个字节长(或更短),那么这不是一件特别困难的事情。如果要对长整数进行排序,甚至是8个字节:您只需将字符串的每个字节映射到整数中的一个字节。所以“ABC”将成为:0x00414243
。
但是在一般情况下,如果您的字符串长度超过8个字节,那么提供该映射将比使用不同的排序算法更昂贵。好吧,除非你想使用一些特殊的BigInteger
类。
即便如此,如果你试图对一个小阵列进行排序,那么O(n ^ 2)额外空间将成为一个交易杀手。对32,000个整数的数组进行排序需要4千兆字节的额外空间。
简而言之,根据您的描述,您要求做的事情是不合理的。