我想编写代码来告诉我数组是否已排序。如果数组是:
- 按升序排列,即。 (1,2,3,4,5),打印1。
- 以降序排列,即(5,4,3,2,1),打印为-1。
- 无订单(1,2,1,4,1),打印0。
public static int isSorted(int[] a) {
int result=0;
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]){
result=-1;
}else if (a[i] < a[i + 1] ) {
result=1;
}else{
result=0;
}
}
return result;
}
public static void main(String[] args) {
int[] a = { 9, 10, 9, 10, 12 };
System.out.println(isSorted(a));
}
}
我的结果现在不符合我的预期,例如现在的顺序[9,10,9,10,12]应该打印0,但我得到1。
有人可以帮我吗?我认为我需要在if / else-block中更改条件。
答案 0 :(得分:1)
由于要覆盖循环中的结果变量,因此result
仅表示最后的检查。在这种情况下,10 <=> 12。
尝试一下,最后检查。
public static int isSorted(int[] a) {
boolean ascending = false;
boolean descending = false;
for (int currentIndex = 0, nextIndex = 1; nextIndex < a.length; currentIndex++, nextIndex++) {
if (a[currentIndex] > a[nextIndex]) {
descending = true;
} else if (a[currentIndex] < a[nextIndex]) {
ascending = true;
}
}
if ((descending && ascending) || (!descending && !ascending)) {
return 0;
} else if (descending) {
return -1;
} else {
return 1;
}
}