문제

나는 대량의 공식적인 의사 코드를 작성할 필요가 없었지만 필요성은 발생 했으므로 코드 전체에서 일관성을 유지하기 위해 일부 표준을 선택할 것이라고 생각했습니다.

그 효과에 대해 나는 "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

마지막 질문 : 누구든지 a 코드 표준 의사 코드가 어딘가에 편리하게? 나의 주요 목표는 일관성이므로 수신자를 한 번만 "가르치기"만하면됩니다.

도움이 되었습니까?

해결책

구조화 된 영어 '표준화 된'의사 코드 언어입니다.

다른 팁

화살표는 평범한 코드로 =로 사용됩니다.

유사의 동일 부호는 일반 코드에서 ==로 제공

그래서 j <- 1 평균 j = 1

그리고 j = 1 평균 if( j == 1)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top