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

StackOverflow https://stackoverflow.com/questions/1426840

  •  07-07-2019
  •  | 
  •  

Вопрос

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

С этой целью я подобрал несколько учебных видеороликов "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

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

Это было полезно?

Решение

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

Другие советы

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

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

итак j <- 1 подлый j = 1

и j = 1 подлый if( j == 1)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top