Псевдокод из некоторых учебных программ MIT - PullRequest
0 голосов
/ 15 сентября 2009

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

С этой целью я взял несколько видеофильмов об iTunes iTunes, среди прочего 6.046J / 18.410J Введение в алгоритмы (SMA 5503) .

В самом первом лекционном видео лектор пишет на доске Insertion Sort и пишет:

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

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

Ответы [ 2 ]

1 голос
/ 15 сентября 2009

структурированный английский - это «стандартизированный» язык псевдокодов.

0 голосов
/ 05 сентября 2013

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

знак равенства в псевдо-коде служит == в нормальном коде

так j <- 1 значит j = 1

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

...