【问题标题】:Can Anyone provide the algorithm of Bead Sort with respect to string array?任何人都可以提供关于字符串数组的 Bead Sort 算法吗?
【发布时间】:2015-04-23 19:31:35
【问题描述】:

由于我无法在 java 上使用整数值中的示例将其编码为字符串数组。 请任何人都可以解释。 Java会更好。

【问题讨论】:

  • 来自维基百科:“珠排序......只能用于对正整数列表进行排序。”

标签: algorithm sorting data-structures pseudocode


【解决方案1】:

根据Wikipedia article,该算法只能对正整数列表进行排序,并且在最好的情况下需要 O(n^2) 额外空间。

如果要使用珠排序对字符串列表进行排序,则需要某种方法将这些字符串转换为正整数,以使数字的关系与字符串之间的关系完全匹配。因此,如果您有字符串“ABC”、“JKL”和“XYZ”,那么为“XYZ”生成的数字必须大于为“JKL”生成的数字,后者必须大于为字符串“ABC”。

如果您的字符串都是四个字节长(或更短),这并不是一件特别困难的事情。如果您想对长整数进行排序,甚至是 8 个字节:您只需将字符串的每个字节映射到整数中的一个字节。所以“ABC”会变成:0x00414243

但在一般情况下,如果您的字符串长度超过 8 个字节,那么提出该映射将比使用不同的排序算法更昂贵。好吧,除非你想使用一些特殊的 BigInteger 类。

即便如此,如果您尝试对一个小数组进行排序,那么 O(n^2) 额外空间将成为交易杀手。对包含 32,000 个整数的数组进行排序需要 4 GB 的额外空间。

简而言之,根据您给出的描述,您要求做的事情是不可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多