Псевдокод из некоторых учебных программ Массачусетского технологического института

У меня никогда не было особой потребности в написании больших объемов формального псевдокода, но необходимость возникла, поэтому я решил выбрать некоторые стандарты, чтобы оставаться согласованным в коде.

С этой целью я подобрал несколько обучающих видео «iTunes U», среди прочего 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

Последний вопрос: есть ли у кого-нибудь стандарт кода для псевдокода? Моя главная цель — постоянство, чтобы мне приходилось «учить» получателей только один раз.


person Lasse V. Karlsen    schedule 15.09.2009    source источник


Ответы (2)


Структурированный английский – это "стандартизированный" язык псевдокода.

person Will    schedule 15.09.2009

стрелка служит = в обычном коде.

знак равенства в псевдокоде служит == в обычном коде

так что j <- 1 означает j = 1

и j = 1 означает if( j == 1)

person user2748680    schedule 04.09.2013