Java Bubble Sort不检查最后一个循环



我正试图对ArrayList进行排序,但现在遇到了麻烦。下面,我有一个getId((函数,用于检索成员的id。我想按成员id对ArrayList进行排序。我已经查看了一些关于这方面的好文章,并实现了以下内容:

例如(排序前(11223344556677889900

例如(排序后(00112233445566778899

Member temp;
for (int i = 0; i < members.size(); i++) {
Member s = members.get(i);
System.out.println("S: "+s.getId());

for (int j=0; j < members.size()-1; j++) {
Member t = members.get(j+1);
System.out.println("T: "+t.getId());

if (s.getId() > t.getId()) {
temp = s;
s = t;
t = temp;
}
}
}
}

我做了上面的打印输出语句来跟踪根本原因,但仍在努力找出错误。

交换代码错误:

if (s.getId() > t.getId()) {
temp = s;
s = t;
t = temp;
}

在这里,您只将st交换,但members的基础数据不受影响。正确的一个:

for (int i = 0; i < members.size() - 1; i++) {
for (int j = 0; j < members.size() - i - 1; j++) {
Member s = members.get(j);
Member t = members.get(j+1);
if (s.getId() > t.getId()) {
Collections.swap(members, j, j+1);
}
}
}

最新更新