如果此代码按升序排序
public static String [] selectionSort_String(String[] inList) {
String temp;
for (int i=0; i<(inList.length-1); i++) {
for (int j=i+1; j<inList.length; j++) {
if (inList[i].compareTo(inList[j]) > 0) {
temp = inList[i];
inList[i] = inList[j];
inList[j] = temp;
}
}
}
// return the sorted Array
return inList;
如何通过降序排序?
答案 0 :(得分:2)
这是非常微不足道的。在您的算法中,如果i
的值大于j
,则会交换指标inList[i]
和inList[j]
。只需在交换它们时更改布尔逻辑(即i小于j)。
...
for (int i=0; i<(inList.length-1); i++) {
for (int j=i+1; j<inList.length; j++) {
if (inList[i].compareTo(inList[j]) < 0) { // <--Changing the operator to LT
temp = inList[i];
inList[i] = inList[j];
inList[j] = temp;
}
}
答案 1 :(得分:2)
这里改变排序方向的最简单方法是更改if语句运算符&gt;到&lt;。
if (inList[i].compareTo(inList[j]) < 0) {
您可以在这里查看compareTo的工作原理 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)
答案 2 :(得分:1)
只需切换&gt;与&lt;在compareTo行中。
答案 3 :(得分:0)
您可以使用Arrays.sort和实现比较object2与object1进行排序,以反转结果。
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
};
Arrays.sort(strings, comparator);