让我们看看有什么问题。
if (i[0] <= i[b])
这是您的代码困扰我的主要领域。您如何检查下一个值是否更低/更高,然后i[b]
您仅将索引零处的值与索引 b 进行比较!
本质上,您的代码在循环中看起来像这样。
/wint i[] = { 1, 2, 3, 4, 5 };
i[0] i[b]
1 1
1 2
1 3
...
你看对了吗?你真正需要的是在之后检查下一个值b.
所以代码看起来像i[b] > i[b+1]
老实说,您可能可以让它在您如何初始化isOrdered
true 和 false 的顺序上起作用。我会首先将其初始化为真。然后,如果您发现问题中存在谬误,那么我们的想法是打破您正在执行的任何过程,false.
请查看我的示例以获取更多参考。
迭代的
boolean isOrdered = true;
while(isOrdered && array.length - 1 > b){
if(array[b] > array[b+1]) isOrdered = false;
b++;
}
递归的
boolean isOrdered(int[] array, index){
if(index == array.length - 1) return true;
if(array[index] > array[index + 1]) return false;
return isOrdered(array, index + 1);
}
递归方法是waaaaaaaaaaycooler。