【发布时间】:2020-04-08 06:33:58
【问题描述】:
我得到一个 ArrayList ,其中包含下一个数据: coordX 、 coordY 、 length 、 position (位置可以是 3 种类型:垂直、水平或 1x1)。使用插入方法,我按长度降序排序。如果长度与具有水平位置的长度值相等,我如何优先考虑。对于给定的输入:
(1;0) , length = 2 , position - vertical
(1;6) , length = 4 , position - horizontal
(3;4) , length = 3 , position - horizontal
(3;6) , length = 1 , position - 1x1
(4;0) , length = 1 , position - 1x1
(5;3) , length = 2 , position - horizontal
(6;7) , length = 2 , position - vertical
(7;5) , length = 2 , position - horizontal
输出应该是:
(1;6) , length = 4 , position - horizontal
(3;4) , length = 3 , position - horizontal
(5;3) , length = 2 , position - horizontal
(7;5) , length = 2 , position - horizontal
(1;0) , length = 2 , position - vertical
(6;7) , length = 2 , position - vertical
(3;6) , length = 1 , position - 1x1
(4;0) , length = 1 , position - 1x1
这是我目前拥有的:
public static void insertionSort(ArrayList<sort> srt) {
int i,j;
for (i = 1; i < srt.size(); i++) {
sort tmp = srt.get(i);
j = i;
while ((j > 0) && (srt.get(j - 1).length< tmp.length)) {
srt.set(j, srt.get(j - 1));
j--;
}
srt.set(j, tmp);
}
for(sort e : srt) {
System.out.println("("+e.coordX+";"+e.coordY+")"+" , length= "+e.length+" , position - "+e.pozitie);
}
}
这部分代码只负责按长度排序。
【问题讨论】:
-
这能回答你的问题吗? How to sort by two fields in Java?
标签: java