令人困惑的伪代码示例

时间:2013-10-11 16:40:16

标签: java pseudocode insertion-sort

尝试将这个简单的伪代码分解为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);
    }

1 个答案:

答案 0 :(得分:4)

实际上,您将while循环与do-while混淆。这里的第一个do不是while的一部分。所以,它不是do-while循环。

它只是告诉在for循环开始之前在while循环中执行显示的赋值。

所以,等效的代码就像:

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
}