【发布时间】:2018-10-13 15:12:30
【问题描述】:
我有一个选择排序方法,可以按年份变量对我的对象进行排序。我让它按升序排序,我似乎无法让降序工作。如果有人可以查看代码并可能为我指明正确的方向,那就太棒了
public static void sortYears(ArrayList<Movies3> list, int ad){
int max, min, i, j;
Movies3 temp;
if(ad == 1){
for (i = 0; i < list.size() - 1; i++){
max = i;
for (j = i + 1; j < list.size(); j++){
if (list.get(max).getYear() > list.get(j).getYear()){
max = j;
}
}
temp = list.get(i);
list.set(i, list.get(max));
list.set(max, temp);
}
}else if(ad == 2){
for (i = 0; i < list.size() - 1; i++){
min = i;
for (j = i + 1; j > list.size(); j++){
if (list.get(min).getYear() < list.get(j).getYear()){
min = j;
}
}
temp = list.get(i);
list.set(i, list.get(min));
list.set(min, temp);
}
}
}
【问题讨论】:
-
AD变量是升序还是降序,1=升序,2=降序
-
在第二个 if 语句中,您使用
for(j = i + 1; j > list.size(); j++)仅此行将评估为false,因为在大多数情况下 j 很可能小于列表的大小,因此整个循环不会被执行。 -
为什么不用比较器?