使用Selection Sort而不使用Array.sort按字母顺序对数组进行排序

时间:2015-03-17 15:09:31

标签: java arrays sorting netbeans compare

我在SelectionSorting上将我的代码引用到mathebits网站,相应地将变量从int更改为String,并按字母顺序添加排序。

以下是我SelectionSort学生lastName的当前代码:

public static void SelectionSort(Student[] st) {
        int i, j, first;
        String temp;
        String jLastName = "";
        String firstLastName = "";
        String iLastName ="";
        for (i = st.length - 1; i > 0; i--) {
            first = 0;   
            for (j = 1; j <= i; j++) 
            {
                if (st[j].getLastName() != null) {

                    jLastName=st[j].getLastName();

                    if (st[first].getLastName() != null) {

                        firstLastName = st[first].getLastName();

                        if ((jLastName.compareToIgnoreCase(firstLastName)) > 0) {
                            first = j;
                        }
                    }
                }
            }

            iLastName = st[i].getLastName();
            temp = firstLastName;
            firstLastName = iLastName;
            iLastName = temp;
        }
    }

代码不会给我错误。但是,输出未显示已按字母顺序排序。

1 个答案:

答案 0 :(得分:2)

你不能比较两个String之类的数字,而是在String中使用compareTo方法,如:

if (st[..].getLastName().compareTo(..) < 0) {..

同样要更改值,您需要在Student中使用新的Setter方法:

public void setLastName(String name) {
    this.name = name;
} 

然后你可以这样称呼它:

st[..].setName(st[i].getName());