任何人都可以提供关于字符串数组的 Bead Sort 算法吗?
Can Anyone provide the algorithm of Bead Sort with respect to string array?
因为我无法在 java 上使用整数值到字符串数组中的示例进行编码。
请任何人解释。 Java会更好。
根据Wikipedia article,该算法只能对正整数列表进行排序,最好的情况下需要额外的 O(n^2) space.
如果您想使用串珠排序对字符串列表进行排序,您需要某种方法将这些字符串转换为正整数,以便数字之间的关系与字符串之间的关系完全匹配。因此,如果您有字符串 "ABC"、"JKL" 和 "XYZ",那么您为 "XYZ" 生成的数字必须大于您为 "JKL" 生成的数字,它必须大于字符串 "ABC".
的数字
如果您的字符串都是四个字节长(或更短),这并不是一件特别困难的事情。如果你想对长整数进行排序,甚至是 8 个字节:你只需将字符串的每个字节映射到整数中的一个字节。所以 "ABC" 会变成:0x00414243
.
但在一般情况下,如果您的字符串超过 8 个字节,那么使用该映射比使用其他排序算法的成本更高。好吧,除非你想使用一些特殊的 BigInteger
class.
即便如此,如果您尝试对一个小数组进行排序,额外的 O(n^2) space 将成为交易杀手。对包含 32,000 个整数的数组进行排序将需要额外的 4 GB space.
简而言之,根据您给出的描述,您要求的操作是不合理的。
因为我无法在 java 上使用整数值到字符串数组中的示例进行编码。 请任何人解释。 Java会更好。
根据Wikipedia article,该算法只能对正整数列表进行排序,最好的情况下需要额外的 O(n^2) space.
如果您想使用串珠排序对字符串列表进行排序,您需要某种方法将这些字符串转换为正整数,以便数字之间的关系与字符串之间的关系完全匹配。因此,如果您有字符串 "ABC"、"JKL" 和 "XYZ",那么您为 "XYZ" 生成的数字必须大于您为 "JKL" 生成的数字,它必须大于字符串 "ABC".
的数字如果您的字符串都是四个字节长(或更短),这并不是一件特别困难的事情。如果你想对长整数进行排序,甚至是 8 个字节:你只需将字符串的每个字节映射到整数中的一个字节。所以 "ABC" 会变成:0x00414243
.
但在一般情况下,如果您的字符串超过 8 个字节,那么使用该映射比使用其他排序算法的成本更高。好吧,除非你想使用一些特殊的 BigInteger
class.
即便如此,如果您尝试对一个小数组进行排序,额外的 O(n^2) space 将成为交易杀手。对包含 32,000 个整数的数组进行排序将需要额外的 4 GB space.
简而言之,根据您给出的描述,您要求的操作是不合理的。