我从来没有太多需要编写大量正式的伪代码,但是需要已经出现,所以我想我会选择一些标准来保持代码的一致性。
为此,我选择了一些“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
最后一个问题:有没有人在某处有伪代码的代码标准?我的主要目标是一致性,所以我只需要“教”一次收件人。
答案 0 :(得分:1)
Structured English是一种“标准化”的伪代码语言。
答案 1 :(得分:0)
箭头在正常代码中用作=。
在普通代码
中伪等号==的等号所以j <- 1
表示j = 1
和j = 1
表示if( j == 1)