while循环使用true false而不增加

时间:2015-09-18 13:47:18

标签: c++

代码是while循环。现在我在这段代码中不明白的一件事是在这段代码中循环函数需要多长时间

while (vis[j] == false ) 
 {
    sum += a[j] ;
    num++;
    if (a[j] < min_val) 
    {
        min_val = a [j];
    }
    vis[j] = true;
    j = place [a[j]];
 }

上面的代码是我在博客上为愚蠢排序问题得到的代码摘录。

http://isolvedaproblem.blogspot.in/2012/02/silly-sort.html?m=1

1 个答案:

答案 0 :(得分:1)

在上面的代码中,sum,num和min_val与它迭代的次数无关,所以循环变为:

while (vis[j] == false ) 
{
  vis[j] = true;
  j = place [a[j]];
}

因此它会在它到达vis [j]中的真值之前迭代多次,这是链允许的次数。它可能是0次,也可能是长度(vis)。这是一个O(n)= n的循环。