我想创建一个方法来检查数组是否已排序,数组开头的最小整数和结尾的最大整数。我命名了数组序列。
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的新手。
答案 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)
一旦找到不匹配(一个证明数组未被排序为邻居的位置按照所需顺序排序),循环似乎就会中断。如果循环没有中断但终止,则不匹配位置指向最后一个字符后,这意味着没有不匹配。