Метод сортировки неправильно сортируется - PullRequest
0 голосов
/ 02 февраля 2019

Предполагается, что этот метод сортирует слова из данного файла в алфавитном порядке после его выбора.Все работает, за исключением того, что это неправильно сортирует.Входной файл гласит: «Кунду - это человек, кунду, человек», но независимо от того, что я пытаюсь, я получаю «[это, кунду, человек, кунду, человек]».

Я пытался убрать »-1 "и" +1 ", но это не помогло.

private String[] selectionSort(String[] stringArray)
{
    for(int j = 0; j < stringArray.length - 1; j++)
    {
        int min = j;
        for(int k = j + 1; k < stringArray.length; k++)
        {
            if(stringArray[k].compareTo(stringArray[min]) < 0)
                min = k;

            swap(stringArray, j, min); //this method swaps the words 
                                       // by using a temp
            //swap(intArray, j, min);
        }
    }

    return stringArray;
}


private void swap(String [] stringArray, int i, int j) //swap method
{
     String temp = stringArray[i];
     stringArray[i] = stringArray [j];
     stringArray[j] = temp;
}

1 Ответ

0 голосов
/ 02 февраля 2019

Ваш swap вызов должен быть после внутреннего цикла.Мол,

private String[] selectionSort(String[] stringArray) {
    for (int j = 0; j < stringArray.length - 1; j++) {
        int min = j;
        for (int k = j + 1; k < stringArray.length; k++) {
            if (stringArray[k].compareTo(stringArray[min]) < 0) {
                min = k;
            }
        }
        swap(stringArray, j, min);
    }
    return stringArray;
}

После этого, без каких-либо других изменений и вашего ввода, я получаю

[a, is, kundu, kundu, man, man]
...