【发布时间】:2015-04-23 19:31:35
【问题描述】:
由于我无法在 java 上使用整数值中的示例将其编码为字符串数组。 请任何人都可以解释。 Java会更好。
【问题讨论】:
-
来自维基百科:“珠排序......只能用于对正整数列表进行排序。”
标签: algorithm sorting data-structures pseudocode
由于我无法在 java 上使用整数值中的示例将其编码为字符串数组。 请任何人都可以解释。 Java会更好。
【问题讨论】:
标签: algorithm sorting data-structures pseudocode
根据Wikipedia article,该算法只能对正整数列表进行排序,并且在最好的情况下需要 O(n^2) 额外空间。
如果要使用珠排序对字符串列表进行排序,则需要某种方法将这些字符串转换为正整数,以使数字的关系与字符串之间的关系完全匹配。因此,如果您有字符串“ABC”、“JKL”和“XYZ”,那么为“XYZ”生成的数字必须大于为“JKL”生成的数字,后者必须大于为字符串“ABC”。
如果您的字符串都是四个字节长(或更短),这并不是一件特别困难的事情。如果您想对长整数进行排序,甚至是 8 个字节:您只需将字符串的每个字节映射到整数中的一个字节。所以“ABC”会变成:0x00414243。
但在一般情况下,如果您的字符串长度超过 8 个字节,那么提出该映射将比使用不同的排序算法更昂贵。好吧,除非你想使用一些特殊的 BigInteger 类。
即便如此,如果您尝试对一个小数组进行排序,那么 O(n^2) 额外空间将成为交易杀手。对包含 32,000 个整数的数组进行排序需要 4 GB 的额外空间。
简而言之,根据您给出的描述,您要求做的事情是不可能的。
【讨论】: