2013-10-11 260 views
1

尝试这个简单的伪分解成Java代码混淆伪代码示例

for j <- 2 to n 
    do key <- A[j] 
     i <- j - 1 
    while i > 0 and A[i] > key 
      do A[i+1] <- A[i] 
      i <- i - 1 
    A[i + 1] = key 

这只是一个插入排序的例子,但我很困惑,什么没有,而喊出了“做”是后先做一阵子。

我有这个至今:

for(int j = 2; j < arrayToSort.size(); j++) 
    { 
     int key, i; 
     do 
     { 
      key = arrayToSort.get(j); 
      i = j -1; 
     }while(i > 0 && arrayToSort.get(i) > key); 
    } 

回答

4

其实你与do-while混淆while循环。第一个do这里不是while的一部分。所以,这不是一个do-while循环。

这只是告诉在循环开始之前在for循环内完成所示的赋值。

所以,等效代码将是这样的:

for (int j = 2; j < n; ++j) { 
    int key = A[j]; 
    int i = j - 1; 

    while (i > 0 && A[i] > key) { 
     A[i+1] = A[i]; 
     i = i - 1; // can be replaced with '--i' 
    } 
    A[i + 1] = key 
} 
+0

哦,所以它的字面意思为“执行以下操作”不是实际do-while循环? – rwarner

+0

@kentoe是的。究竟。 –

+0

非常感谢,现在肯定有道理。我还没有看到使用“do”的伪代码 – rwarner