java - while 循环中的多个条件给出不同的结果

标签 java c++ algorithm sorting insertion-sort

我在 while 循环中有两个条件:

count = 0;
while (j >= 0 && arr[j] > key)
       {
           count++;
           j = j-1;
       }

当我打破以下两个条件时,计数会发生变化:

while (j >= 0)
{
    if(arr[j] > key)
    {
        count++;
    }
    j = j-1;
}

第一个程序的输出:456

第二个程序的输出:904。

我认为这两个代码块是相同的。为什么这两个程序的计数不同?

最佳答案

这两个版本在逻辑上并不等同。在第一个版本中,仅当两个条件都为真时,j 才会递减。在第二个版本中,仅当第一个条件为真时,j 才会递减。当第二个版本中键比较失败时,j 仍然会递减。

由于 j 用作计算循环条件的一部分,因此这直接影响循环执行的次数。

关于java - while 循环中的多个条件给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46870471/

相关文章:

java - java中如何判断文件是否损坏

Java EE Websocket : How to send keep sending data without receiving message?

c++ - VS2017 Linux C++线程问题

c++ - 将成员或非成员函数指针作为参数传递

java - Reducer节点需要很长时间才能接收其记录

java - Single 发出传递函数返回的值

algorithm - 遍历所有区域的最短路径

python - 收集雨水的时间复杂度

c++ - <vector> 搞乱了我的快速排序

algorithm - 何时停止凝聚层次聚类 - 停止标准