Я никогда не имел особой нужды в написании большого количества формальных псевдо-кода, но возникла необходимость, так что я выбрал бы некоторые стандарты, чтобы остаться последовательным по коду.
С этой целью я взял некоторые «ITunes U» Courseware видео, среди прочего 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-1когдаA[i+1] = key? То есть, почему←в некоторых случаях, и=в другом? Обратите внимание , что в приведенном выше коде,←используется для последнего тоже, но в раздаточных материалах, доступных в Интернете,=используется, это просто опечатка? (Я предполагаю , что так) - Еще более важно, почему
do key ← A[j]когдаi ← j-1? Что такое особенное , что он требует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
Последний вопрос: Кто - нибудь есть стандартный код для псевдо-коды удобных где - нибудь? Моя главная цель консистенцию, так что у меня только «научить» реципиентов один раз.













