Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java对字符串进行排序_Java_Sorting_Bucket Sort - Fatal编程技术网

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

如何使用Java对字符串进行排序,java,sorting,bucket-sort,Java,Sorting,Bucket Sort,我正在尝试对字符串进行排序。我已经对第一个字母进行了排序,但随后的字母没有排序。我还需要用*填充与最长单词不相同的单词,但我不知道如何做。我的基数是27。填充的字母和*字符。目前的结果是 苹果 算法 澳大利亚 杰克 奥林匹克 卖 睡眠 为此,我使用了基数排序和桶排序的组合。我把桶排序称为基数排序。我认为问题出在BUcket sort实现中 private static void bucketSort(List<String> S, int d, int i) {

我正在尝试对字符串进行排序。我已经对第一个字母进行了排序,但随后的字母没有排序。我还需要用*填充与最长单词不相同的单词,但我不知道如何做。我的基数是27。填充的字母和*字符。目前的结果是 苹果 算法 澳大利亚 杰克 奥林匹克 卖 睡眠

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

 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;
}
私有静态void bucketSort(列表S,int d,int i){
而(!S.isEmpty()){
整数除数=pow(基数,i-1);
int模=功率(基,i);
字符串s=s.remove(s.first());
int index=(s.length()0){
pow*=基地;
我--;
}
返回战俘;
}
算法 苹果 澳大利亚 杰克 奥林匹克 卖
sleep

为什么不使用现有的方法,如
Collections.sort

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

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

为什么不使用现有的方法,如
Collections.sort

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

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

奇怪的是,同时使用桶排序和基数排序,因为它们基本上是一样的。你能解释一下为什么要这样做吗?你有什么理论解释为什么这是个好主意吗?不是吗你的
pow
方法是一个整数溢出吗?因为你的基数是27,而
27^7
将产生整数溢出。你能描述一下
d
i
方法
bucketSort
中的参数是什么意思吗?糟糕的标题。重写以总结你的具体技术问题。你为什么要实现自己的c比较/排序函数,如果你可以依赖标准库的话?我为我撰写文章的方式道歉。最长单词的长度由“d”表示,我正在使用“I”遍历该单词。我在基数排序中调用Buschket排序函数。我决定不在基数排序中使用计数排序函数。我不确定为了不违反论坛规则,你可以重写整个内容。我只是时断时续地在这里发帖,为我构建内容的方式道歉。奇怪的是,你同时使用桶排序和基数排序,因为它们基本上是同一件事。你能解释一下你为什么这样做吗?你有什么理论为什么这是个好主意吗?难道不是你的
pow
方法会导致整数溢出吗?因为你的基数是27,而
27^7
会导致整数溢出。你能描述一下
d
i
方法
bucketSort
中的参数是什么意思吗?糟糕的标题。重写以总结你的具体技术问题。你为什么要实现自己的方法比较/排序函数,如果你可以依赖标准库的话?我为我撰写文章的方式道歉。最长单词的长度由“d”表示,我正在使用“I”遍历该单词。我在基数排序中调用了Buschket排序函数。我决定不在基数排序中使用计数排序函数。我不确定是不是为了不违反论坛规则,你可以重写整个内容。我只是时断时续地在这里发帖,对我构建内容的方式表示歉意。问题可能是因为家庭作业或学习挑战,而不是实际工作问题。我也这么认为,但OP没有说明任何限制或必须解决的具体方法当我建议你发表评论寻求澄清时使用。问题可能是因为家庭作业或学习挑战,而不是实际工作问题。我也这么认为,但OP没有说明任何限制或在我建议你发表评论寻求澄清时必须使用的具体方法。