Быстрая сортировка массива строк в Java? - PullRequest
0 голосов
/ 06 января 2019

Полное новичок в Java, поэтому, пожалуйста, прости любые глупые ошибки. Я работаю над большим заданием, но застрял в методе быстрой сортировки, и, несмотря на то, что я играл с ним последние несколько часов и смотрел на него, пока я почти не ослеп, я не могу понять, где я идет не так.

Я получаю сообщение об ошибке «ошибка: метод QuicksortString в классе testmenu01 не может быть применен к данным типам». Я знаю, что это как-то связано с тем, как я передал параметры, но попробовал и повторил попытку и не могу найти свою ошибку. Я уверен, что это что-то глупое и явно очевидное, но не могу найти это. Буду очень признателен за любую помощь, спасибо!

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 голосов
/ 06 января 2019

Чтобы исправить ошибку, измените QuicksortString( nameArr ); в основном методе на QuicksortString( nameArr, 0,nameArr.length-1 );, поскольку вы определили этот метод со списком параметров из трех параметров: public void QuicksortString(String [] stringArray, int start, int end). Так же, как ваш рекурсивный вызов.

Кроме того, вам лучше перейти на другую строку для return в предложении else:

else { 
    return; 
}

И это должен быть static метод для swap и QuicksortString (quicksortString - лучшее имя метода в java), чтобы метод static main мог вызывать их без создания экземпляра класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...