我从来没有过多需撰写大量的正式伪码但需要已经出现,所以我认为我会挑选一些标准,以保持一致的代码。

为此,我捡到一些"iTunes U"视频课件,除其他事情的 6.046J/18.410J介绍算法(SMA5503).

在第一次视频演讲,讲师写插入排序在黑板上,他写道:

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-1A[i+1] = key?这就是为什么 在某些情况下,和 = 在另一个?请注意,在上述码, 是用于后者太多,但在讲义,可在网上 = 是用,这只是一个错误?(I假设使)
  • 更重要的是,为什么 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

最后一个问题:任何人都不会有 代码的标准 对于伪码方便的地方吗?我的主要目标是一致的,所以,我只有"教"收件人的一次。

有帮助吗?

解决方案

结构化的英语 是一个'标准'伪码语言。

其他提示

箭头作为=在正常的代码。

等号的伪作为==在正常的代码

所以 j <- 1 意思是 j = 1

j = 1 意思是 if( j == 1)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top