布尔解释

时间:2014-04-25 08:21:37

标签: java arrays boolean sorted

我想创建一个方法来检查数组是否已排序,数组开头的最小整数和结尾的最大整数。我命名了数组序列。

public boolean isSorted(){
   int i = 1;
   while(i < sequence.length && sequence[i] >= sequence[i-1]){
      i++;
   }
   return i >= sequence.length;
}

我在朋友的帮助下得到了这段代码,但我并不完全理解它。什么作为布尔值返回?据我所知,阅读其他帖子,当i&gt; = sequence.length时,它将返回true only 。 给定while的条件,只有当数组被排序时,我才会更大或相同于sequence.length。

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

3 个答案:

答案 0 :(得分:2)

也许以这种方式重构方法会使代码更简单,更易读:

public boolean isSorted(int[] sequence) {
    for (int idx = 1; idx < sequence.length; idx++) {
        if (sequence[idx] < sequence[idx-1]) return false;
    }
    return true;
 }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

一旦找到不匹配(一个证明数组未被排序为邻居的位置按照所需顺序排序),循环似乎就会中断。如果循环没有中断但终止,则不匹配位置指向最后一个字符后,这意味着没有不匹配。