如何将顺序从升序降到降序?我有点沮丧,因为我不能使用array.reverse等,因为在我们的测试中我们将不允许使用Java内置方法。真是可惜,arrays.sort很棒。但截至目前,它的确以升序打印。我对编码和这个网站都比较陌生,所以如果我的格式不好。我道歉。
public static int[] sort(int a, int b, int c) {
int[] j = {a, b ,c};
int i, k, temp = 0;
for(i = 0; i < j.length; i++) {
for(k = i + 1; k < j.length; k++) {
temp = 0;
if(j[i] > j[k]) {
temp = j[i];
j[i] = j[k];
j[k] = temp;
}
}
}
}
public static void main (String[] args) {
System.out.println(Arrays.toString((sort(6,3,11))));
答案 0 :(得分:3)
只需切换此行:
if(j[i] > j[k]) {
对此:
if(j[i] < j[k]) {
这是因为在现有代码中,如果第一个较大,则交换元素(因此将较大的元素移到列表的后面)。
使用第二个代码段时,如果第一个较小,则会交换元素,从而将较小的元素移到列表的后面。
答案 1 :(得分:0)
您可以使用Java 8流来简化此功能。将参数添加到您的排序函数中,变得很容易:
private static int[] sort(int a, int b, int c, boolean ascending) {
Comparator<? super Integer> comparator = (ascending) ? Integer::compareTo : Comparator.reverseOrder();
return Stream.of(a, b, c).sorted(comparator).mapToInt(t -> t).toArray();
}