快速排序Java中的字符串数组?

时间:2019-01-06 13:25:30

标签: java arrays string quicksort

完整的Java新手,所以请原谅任何愚蠢的错误。我正在做一个较大的任务,但是却被卡在快速排序方法上,尽管在过去的几个小时里一直在玩它,直到我几乎失明为止,但我似乎无法弄清楚我在哪里出问题了。

我收到一条错误消息“错误:类testmenu01中的方法QuicksortString无法应用于给定类型”。我知道这与我传入参数有关,但是尝试并重试后却找不到我的错误。我确信它有些愚蠢而明显,但找不到。非常感谢您的帮助,谢谢!

public class testmenu01 {

public static void main(String[] args){
    String[] nameArr = {"Anna", "Brad", "Charles", "Debbie", "Emma", "Fergal"};
    QuicksortString( nameArr );


}

public void QuicksortString(String [] stringArray, int start, int end) {
    int i = start;
    int k = end;
    if (end - start >= 1) {
        String pivot = stringArray[start];
        while (k > i) {
            while (stringArray[i].compareTo(pivot) <= 0 && i <= end && k > i)
                i++;
            while (stringArray[k].compareTo(pivot) > 0 && k >= start && k >= i)
                k--;
            if (k > i)
                swap(stringArray, i, k);
        }
        swap(stringArray, start, k);
        QuicksortString(stringArray, start, k - 1);
        QuicksortString(stringArray, k + 1, end);
    } else { return; }
}
public void swap(String array[], int index1, int index2) {
    String temp = array[index1];
    array[index1] = array[index2];
    array[index2] = temp;
}

}

1 个答案:

答案 0 :(得分:0)

为解决错误,将主方法中的col-lg-6更改为class ClassA { constructor() { this.stringA = "Hello" this.objB = new ClassB(); this.objC = new ClassC(); } functionA() { this.objB.functionB(this.stringA); this.objC.functionC(this.objB.intB); } } class ClassC { constructor() {} functionC(intB) { console.log(intB); } } class ClassB { constructor() { this.intB = 10; } functionB(stringA) { console.log(stringA); } } ,因为您使用三个参数的参数列表定义了此方法:QuicksortString( nameArr );。就像您的递归调用一样。

此外,您最好将QuicksortString( nameArr, 0,nameArr.length-1 );条款中的public void QuicksortString(String [] stringArray, int start, int end)换成另一行:

return

对于elseelse { return; } 来说,它都应该是static方法(swap是Java中更好的方法名称),以便让QuicksortString方法quicksortString在不实例化类的情况下调用它们。