Ich hatte noch 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 nahm ich einige iTunes U Schulungsvideos auf, unter anderem der 6.046J / 18.410J Introduction to Algorithms (SMA 5503) .
Im ersten Vortrag Video, schreibt der Dozent Insertion Sort an der Tafel, und er schreibt dazu:
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-1wennA[i+1] = key? Das heißt, warum←in einigen Fällen und=in einem anderen? Beachten Sie, dass in dem obigen Code, der←auch für die letztere verwendet wird , aber in den Handreichungen, die im Internet verfügbar ist ,=verwendet wird, ist dies einfach ein Tippfehler? (Ich gehe davon aus, so) - Noch wichtiger ist , warum ,
do key ← A[j]wenni ← j-1? Was ist so besonders , dass es einen erfordertdoBefehl so, 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 hat Codestandard für praktisch irgendwo Pseudo-Code? Mein Hauptziel ist die Konsistenz, so dass ich nur einmal die Empfänger müssen „lehren“.













