我从来没有太多的需要编写大量的正式伪代码,但是已经出现了这种需求,所以我想我应该选择一些标准来保持代码之间的一致性。
为了达到这个目的,我找到了一些"iTunes U“课件视频,还有6.046J / 18.410J算法简介(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最后一个问题:有没有人在某个地方有伪代码的代码标准?我的主要目标是一致性,所以我只需要“教”收件人一次。
发布于 2009-09-15 12:40:26
结构化英语是一种“标准化”的伪代码语言。
发布于 2013-09-04 22:29:48
箭头在普通代码中用作=。
伪等号在法线码中充当==
所以j <- 1的意思是j = 1
j = 1平均if( j == 1)
https://stackoverflow.com/questions/1426840
复制相似问题