質問
大量の正式な擬似コードを記述する必要は一度もありませんでしたが、その必要性が生じたので、コード全体で一貫性を保つためにいくつかの標準を選択すると思いました。
そのために<!> quot; iTunes U <!> quot;を選びました。コースウェアビデオ、とりわけ 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]
が使用されていますが、Webで入手可能な配布資料では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
最終的な質問:誰かがどこかで便利な擬似コードのコード標準を持っていますか?私の主な目標は一貫性です。そのため、<!> quot; teach <!> quot;受信者を1回。
解決
構造化された英語は、「標準化された」擬似コード言語です。
他のヒント
通常のコードでは、矢印は=として機能します。
疑似コードの等号は、通常のコードでは==として機能します
so j <- 1
平均j = 1
およびif( j == 1)
は<=>
所属していません StackOverflow