Ik heb nog nooit zoveel behoefte aan het schrijven van grote hoeveelheden formele pseudo-code, maar is de behoefte ontstaan, dus ik dacht dat ik een aantal normen om consistent code te blijven halen.
Om dat effect dat ik pakte enkele iTunes U courseware video's, onder andere de 6.046J / 18.410J Introduction to Algorithms (SMA 5503) .
In de eerste lezing video, de docent schrijft Insertion Sort op het bord, en hij schrijft:
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
Dus mijn vragen:
- Waarom
i ← j-1wanneerA[i+1] = key? Dat wil zeggen, de reden waarom←in sommige gevallen, en=in een ander? Merk op dat in de bovenstaande code, het←wordt ook gebruikt voor het laatste, maar in de hand-outs, beschikbaar op het web,=wordt gebruikt, dit is gewoon een typo? (Ik neem zo) - Nog belangrijker, waarom
do key ← A[j]wanneeri ← j-1? Wat is er zo bijzonder dat het een vereistdocommando als dat, en een inkeping?
Met andere woorden, waarom is niet de bovenstaande pseudo-code geschreven als volgt (met mijn 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
Final vraag: Heeft iemand een code standaard voor pseudo-code handig ergens? Mijn voornaamste doel is consistentie, zodat ik alleen maar te leren de ontvangers een keer.













