我怎么会去扭转从升序到降序的顺序?我有点为难,因为我不能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))));
简单地切换这一行:
if(j[i] > j[k]) {
为此:
if(j[i] < j[k]) {
这是因为在现有的代码,你要互换的第一个元素是大(比移动较大的一个,以在后面的列表)。
当使用第二代码段,它交换的元素,如果第一个是较小的,因此,移动较小的一个在列表中以后。
您可以使用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();
}