Nikdy jsem neměl moc potřebu psát velké množství formálních pseudo-kódu, ale vznikla potřeba, tak jsem myslel, že bych vyzvednout nějaké normy, aby zůstali konzistentní kódu.
Za tímto účelem jsem sebral nějaké „iTunes U“ výukového videa, mimo jiné věcí, 6.046J / 18.410J Úvod do algoritmů (SMA 5503) .
Hned v prvním přednáškovém video, přednášející píše insertion sort na tabuli a píše toto:
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
Takže mé otázky:
- Proč
i ← j-1, kdyžA[i+1] = key? To znamená, že důvod, proč←v některých případech i=v jiném? Všimněte si, že ve výše uvedeném kódu se←používá pro druhou taky, ale na podklady, k dispozici na webu,=je používán, je to prostě překlep? (Předpokládám tak) - Ještě důležitější je, proč
do key ← A[j], kdyži ← j-1? Co je tak zvláštního, že vyžadujedopříkaz takhle, a zářez?
Jinými slovy, proč není nad pseudo-kód napsaný takto (s mým vrcholům):
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
Poslední otázka: Má někdo standardní kód pro pseudo-kódu šikovný někam? Mým hlavním cílem je konzistence, takže mám jen „učit“ příjemcům najednou.













