来自一些麻省理工学院课件的伪代码

时间:2009-09-15 12:19:36

标签: pseudocode

我从来没有太多需要编写大量正式的伪代码,但是需要已经出现,所以我想我会选择一些标准来保持代码的一致性。

为此,我选择了一些“iTunes U”课件视频,其中包括6.046J / 18.410J Introduction to Algorithms (SMA 5503)

在第一个讲座视频中,讲师在黑板上写下插入排序,他写道:

Insertion-Sort(A, N) // Sorts A[1..n]
  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

所以,我的问题:

  • i ← j-1时为何A[i+1] = key?也就是说,为什么在某些情况下,在另一种情况下为=?请注意,在上面的代码中,也用于后者,但在网络上提供的讲义中使用=,这只是一个错字吗? (我假设如此)
  • 更重要的是,为什么do key ← A[j]何时i ← j-1?有什么特别之处,需要do这样的命令和缩进?

换句话说,为什么不是这样写的伪代码(带有我的亮点):

Insertion-Sort(A, N) // Sorts A[1..n]
  for j ← 2 to n
    key ← A[j]                  <-- lost the do here
    i ← j-1                     <-- no indentation
    while i > 0 and A[i] > key
      A[i+1] ← A[i]             <-- lost the do here
      i ← i-1                   <-- no indentation
    A[i+1] ← key

最后一个问题:有没有人在某处有伪代码的代码标准?我的主要目标是一致性,所以我只需要“教”一次收件人。

2 个答案:

答案 0 :(得分:1)

Structured English是一种“标准化”的伪代码语言。

答案 1 :(得分:0)

箭头在正常代码中用作=。

在普通代码

中伪等号==的等号

所以j <- 1表示j = 1

j = 1表示if( j == 1)