Java 冒泡排序不检查最后一个循环
Java Bubble-Sort Not checking the last loop through
我正在尝试对 ArrayList 进行排序,但此时遇到了困难。下面,我有一个 getId() 函数来检索成员的 ID。我想按成员 ID 对 ArrayList 进行排序。我已经检查了一些关于此的好文章并实施了以下内容:
例如(排序前)
11
22
33
44
55
66
77
88
99
00
例如(排序后)
00
11
22
33
44
55
66
77
88
99
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;
}
这里你只交换s
和t
,但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);
}
}
}
我正在尝试对 ArrayList 进行排序,但此时遇到了困难。下面,我有一个 getId() 函数来检索成员的 ID。我想按成员 ID 对 ArrayList 进行排序。我已经检查了一些关于此的好文章并实施了以下内容:
例如(排序前) 11 22 33 44 55 66 77 88 99 00
例如(排序后) 00 11 22 33 44 55 66 77 88 99
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;
}
这里你只交换s
和t
,但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);
}
}
}