我从来没有太多需要编写大量正式的伪代码,但是需求已经出现了,所以我想我应该选择一些标准来保持代码之间的一致性。
为此,我挑选了一些“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]
什么时候
我是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
最后一个问题:有人有
代码标准
伪代码在什么地方方便?我的主要目标是一致性,所以我只需要“教”一次接受者。