题
我从来没有过多需撰写大量的正式伪码但需要已经出现,所以我认为我会挑选一些标准,以保持一致的代码。
为此,我捡到一些"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-1
时A[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)
不隶属于 StackOverflow