为什么我们必须减少下面代码片段中的计数器?
该程序将数组从最大到最小排序。递减对循环计数器有影响吗?
int temp;
for (int i = 0; i < array.length-1; i++) {
if(array[i] < array[i+1]) {
temp=array[i];
array[i]=array[i+1];
array[i+1]=temp;
i--; // <<== This line
}
}
最佳答案
如果您怀疑递减 i
在 if
是不必要的,你是对的:它可以安全地删除。
代码作者递减的原因i
在 if
语句的目的是“撤消”循环头中增量的影响,以防需要额外的交换。然而,条件保证下一次在 if
附近。将会失败,因此可以安全地删除减量。例如,如果您刚刚交换了 2 和 5,因为 2 < 5
,您不会将 5 和 2 交换回去,因此让循环移动到下一个索引是安全的。
关于java - 循环中的 if 语句中的 i-- 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41909675/