質問

大量の正式な擬似コードを記述する必要は一度もありませんでしたが、その必要性が生じたので、コード全体で一貫性を保つためにいくつかの標準を選択すると思いました。

そのために<!> 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-1A[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)は<=>

を意味します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top