排序方法未正确排序

时间:2019-02-02 00:38:09

标签: java arrays file for-loop swap

应该选择此方法后,将给定文件中的单词按字母顺序排序。一切工作正常,除非无法正确排序。输入文件显示为“ kundu是一个男人kundu男人”,但是无论我尝试什么,我都会得到“ [is,kundu,a,man,kundu,man]”。

我尝试拿走“ -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 :(得分:0)

您的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]