java - 循环中的 if 语句中的 i-- 做什么?

标签 java arrays loops

为什么我们必须减少下面代码片段中的计数器?

该程序将数组从最大到最小排序。递减对循环计数器有影响吗?

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
       }
 }

最佳答案

如果您怀疑递减 iif是不必要的,你是对的:它可以安全地删除。

代码作者递减的原因iif语句的目的是“撤消”循环头中增量的影响,以防需要额外的交换。然而,条件保证下一次在 if 附近。将会失败,因此可以安全地删除减量。例如,如果您刚刚交换了 2 和 5,因为 2 < 5 ,您不会将 5 和 2 交换回去,因此让循环移动到下一个索引是安全的。

关于java - 循环中的 if 语句中的 i-- 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41909675/

相关文章:

c# - 在c#中将字符串拆分为字符串数组而不带分隔符

r - 在 R 中创建以字符列为条件的二进制列

performance - 如何构建减少迭代次数的循环

java - 处理长字符串和 TextView 行为

Java 同步块(synchronized block)与 concurrentHashMap 与 Collections.synchronizedMap

java - 代码设计模式结构

java - 删除包含某个字母的字符串的 JTable 行

python - 在 matlab 和 python 中创建迭代数组

c - 字符串、字符数组大小和 calloc --- 是什么导致了这个段错误?

R:循环自定义 dplyr 函数