使用不带 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());
我将我的代码引用到 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());