Java 布尔解释

Java 布尔解释,java,arrays,boolean,sorted,Java,Arrays,Boolean,Sorted,我想做一个方法来检查数组是否被排序,数组的开头是最小的整数,结尾是最大的整数。我给数组序列命名 public boolean isSorted(){ int i = 1; while(i < sequence.length && sequence[i] >= sequence[i-1]){ i++; } return i >= sequence.length; } public boolean isSorted(){ int

我想做一个方法来检查数组是否被排序,数组的开头是最小的整数,结尾是最大的整数。我给数组序列命名

public boolean isSorted(){
   int i = 1;
   while(i < sequence.length && sequence[i] >= sequence[i-1]){
      i++;
   }
   return i >= sequence.length;
}
public boolean isSorted(){
int i=1;
而(i=sequence[i-1]){
i++;
}
返回i>=sequence.length;
}
我是在一个朋友的帮助下得到这段代码的,但是我并不完全理解它。返回的布尔值是什么?据我所知,在阅读其他帖子时,只有当I>=sequence.length时,它才会返回true。 给定while的条件,只有在对数组排序时,i才会更大或与sequence.length相同


我说得对吗?抱歉,如果我的格式很糟糕,我仍然是stackoverflow的新手。

你说得对。循环检查阵列中的每对相邻元素。如果每个元素大于其前面的元素,则必须对其进行排序。如果任何一对不满足条件,循环立即中断,留下一个小于sequence.length的
i
,因此条件
i>=sequence.length
告诉您整个数组已成功处理,必须正确排序。

一旦不匹配,循环似乎会立即中断(证明数组未排序的位置,因为邻域按所需顺序排序)如果循环没有中断而是终止,则不匹配的位置会指向最后一个字符之后,这意味着不存在不匹配。

也许通过这种方式重构方法会使代码不那么复杂,可读性更高:

public boolean isSorted(int[] sequence) {
    for (int idx = 1; idx < sequence.length; idx++) {
        if (sequence[idx] < sequence[idx-1]) return false;
    }
    return true;
 }
public boolean被排序(int[]序列){
for(int-idx=1;idx
对,通常使用调试工具更好地理解代码。返回值可以更改为
返回i==sequence.length
,因为它永远不会更大。