使用不带 Array.sort 的 SelectionSort 按字母顺序对数组进行排序

Sort Array by Alphabetical order using SelectionSort without Array.sort

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

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

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;
        }
    }

代码没有报错。但是输出没有显示已经按照字母顺序排序了。

你不能像数字一样比较两个字符串,而是在字符串中使用 compareTo 方法,如:

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

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

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

然后你可以这样称呼它:

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