【发布时间】:2019-06-14 10:57:15
【问题描述】:
我正在尝试对内部列表中有 7 列的 2d ArrayList 进行冒泡排序。第三列是价格。我正在尝试比较行的价格列,并将价格较高的行与价格较低的行交换。这意味着最终 ArrayList 应该有按价格升序排列的行。
但是每次交换行时,较大行中的所有元素都会更改为较小行中的相同元素。下面是代码。
boolean found = true;
do{
found = false;
for(int i = 0; i <= rc; i++) {
if(i + 1 <= rc) {
if(Integer.parseInt(list.get(i).get(3)) > Integer.parseInt(list.get(i + 1).get(3))) {
ArrayList<String> greater = list.get(i);
ArrayList<String> smaller = list.get(i + 1);
for(int k = 0; k <= 7; k++) {
list.get(i).set(k, smaller.get(k));
list.get(i + 1).set(k, greater.get(k));
}
found = true;
}
}
}
} while(found == true);
原始数组列表:
[[1, sagarmatha, 5000, 7000, Two-Star, Two-Person-Room, 2, Resturant],
[2, barahi, 4000, 4000, Three-Star, One-Person-Room, 1, Free-WIFI]]
排序后:
[[2, barahi, 4000, 4000, Three-Star, One-Person-Room, 1, Free-WIFI],
[2, barahi, 4000, 4000, Three-Star, One-Person-Room, 1, Free-WIFI]]
【问题讨论】:
-
尝试只移动引用而不是复制数组的内容。如果没有中间缓冲区,你就会遇到这个问题。
标签: java bubble-sort