Frage

Ich habe nie viel Bedarf an großen Mengen an formalen Pseudo-Code zu schreiben, aber die Notwendigkeit entstanden ist, so dass ich dachte, dass ich einige Standards, um über Code konsistent zu bleiben, wählen würde.

Zu diesem Zweck habe ich einige „iTunes U“ Courseware Videos aufgenommen, unter anderem die 6.046J / 18.410J Introduction to Algorithms (SMA 5503) .

In dem ersten Vorlesung Video, schreibt der Dozent Insertion Sort an der Tafel, und er schreibt diese:

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

Also, meine Fragen:

  • Warum i ← j-1 wenn A[i+1] = key? Das heißt, warum in einigen Fällen und = in einem anderen? Beachten Sie, dass in dem obigen Code wird die auch für die letztere verwendet wird, aber in den Handreichungen, die im Internet verfügbar, = verwendet wird, ist dies einfach ein Tippfehler? (Ich gehe davon aus, so)
  • Noch wichtiger ist, warum do key ← A[j] wenn i ← j-1? Was ist so besonders, dass es einen do Befehl wie das erfordert, und eine Vertiefung?

Mit anderen Worten, warum ist nicht der oben Pseudo-Code wie folgt geschrieben (mit meinen Highlights):

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

Letzte Frage: Hat jemand einen Code Standard für Pseudo-Code irgendwo praktisch? Mein Hauptziel ist die Konsistenz, so dass ich nur „lehren“ müssen einmal die Empfänger.

War es hilfreich?

Lösung

Structured Englisch ist eine 'standardisierte' Pseudo-Code-Sprache.

Andere Tipps

Der Pfeil als = in normalen Code dienen.

Gleichheitszeichen in pseudo dienen als == in normalen Code

so j <- 1 bedeuten j = 1

und j = 1 bedeuten if( j == 1)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top