java - 如何使用 Java 对字符串进行排序

标签 java sorting bucket-sort

我正在尝试对字符串进行排序。我已对第一个字母进行排序,但后续字母未排序。我还需要用 * 填充与最长单词不同的单词,但我不知道如何做到这一点。我的 BASE 是 27。填充的字母和 * 字符。目前的结果是 苹果 算法 澳大利亚 jack 奥林匹克 卖 sleep

为此,我结合使用了基数排序和桶排序。我把桶排序称为基数排序。我认为问题出在 BUcket 排序实现中。

 private static void bucketSort(List<String> S, int d, int i) {     
    while(!S.isEmpty()) {       
        int DIVISOR = pow(BASE, i-1);
        int MODULO = pow(BASE, i);  
        String s = S.remove(S.first());
        int index = (s.length() <= d)? 0: s.charAt(i) - ('a'-1);
        System.out.println(index);
        int value = s.charAt(index); 
        int index2 = (value / DIVISOR) % MODULO;

        buckets[index2].insertLast(s);
    }

    for (List<String> bucket : buckets) {
        while (!bucket.isEmpty()) {
            S.insertLast(bucket.remove(bucket.first()));
        }
    }
}
private static int pow(int base, int i) {
    int pow = 1;
    while (i > 0) {
        pow *= base;
        i--;
    }
    return pow;
}

算法 苹果 澳大利亚 jack 奥林匹克 卖 sleep

最佳答案

为什么不使用 Collections.sort 等现有方法?

List<String> S = Arrays.asList("apple", "algorithm", "australia", "jack", "olympic", "sell", "sleep");
Collections.sort(S);

或者,如果您想指定 lambda 排序函数:

S.sort((p1, p2) -> p1.compareTo(p2));

您需要填充有什么原因吗?最简单的解决方案是找到所有字符串的最大长度并添加缺失的空格。

关于java - 如何使用 Java 对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55579322/

相关文章:

java - 查找一组数字的特定大小的所有可能组合

Java Arrays.sort() 需要很长时间

java - 如何在java中对字符串类型的日期进行排序

objective-c - Objective C 中的桶排序实现

java - IndoorAtlas SDK 2.0 map 未加载

java - 将字符串数组转换为字节数组

java - 如何用 Java 中表上的特定索引替换文本?

php - 按文件名对 $_FILES 进行排序

c - MPI_ERR_RANK : invalid rank with cluster

haskell - Haskell 中的 Map.toList 性能