책 내용 질문하기
형광색부분 모르겠어요. 이해가 안됩니다
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
조회수
70
작성일
2017-10-01
작성자
탈퇴*원
첨부파일
답변
2017-10-10 10:13:47

안녕하세요.

C언어는 배열의 위치가 0부터 시작합니다.

i가 0일 때, 즉 1회전에서는
j는 0부터 8-i, 즉 8까지 비교합니다.
다시말해
j가 0일 때는
data[0]일 때 data[1]과
j가 1일 때는
data[1]일 때 data[2]와
.
.
j가 7일 때는
data[7]일 때 data[8]과
j가 8일 때는
data[8]일 때 data[9]와 비교합니다.
data 배열은 data[0]부터 data[9]까지 10개이므로 8-i까지 비교하면 각 회전때마다 맞게 비교됩니다.

하나만 더 살펴볼까요.

i가 1일 때, 즉 2회전에서는
j는 0부터 8-i, 즉 7까지 비교합니다. 마지막 data[9]에는 1차 정렬된 값이 저장되므로 2회전에서는 data[8]까지만 비교하면 됩니다.
그래서
j가 0일 때
data[0]과 data[1]을
j가 7일 때
data[7]과 data[8]을 비교하게 됩니다.

그리고 i는 회전수를 의미합니다. 회전은 데이터가 총 10개라면 9번만 하면 됩니다.
i도 0부터 시작이므로
i는 0일 때 1회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
i는 1일 때 2회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
i는 2일 때 3회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
i는 3일 때 4회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
.
.
i는 6일 때 7회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
i는 7일 때 8회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
i는 8일 때 9회전을 하고 비교합니다. i < 8인지 No이므로 수행을 중지합니다.

결국 i < 8일 때까지 수행하면 9회전을 하게 됩니다.

C언어는 배열의 위치가 0부터 시작하기 때문에 이런 차이가 발생함을 염두에 두고 학습하세요.

종료 기준값을 확인할 때는 반드시 디버깅을 직접 수행한 후 판단을 해야 합니다.
디버깅 없이 눈으로만 확인할 경우 맞는 것 같아 실수하는 경우과 많기 때문입니다. 이점 학습에 꼭 참고하세요.

오늘도 즐거운 하루 되세요.

  • *
    2017-10-10 10:13:47

    안녕하세요.

    C언어는 배열의 위치가 0부터 시작합니다.

    i가 0일 때, 즉 1회전에서는
    j는 0부터 8-i, 즉 8까지 비교합니다.
    다시말해
    j가 0일 때는
    data[0]일 때 data[1]과
    j가 1일 때는
    data[1]일 때 data[2]와
    .
    .
    j가 7일 때는
    data[7]일 때 data[8]과
    j가 8일 때는
    data[8]일 때 data[9]와 비교합니다.
    data 배열은 data[0]부터 data[9]까지 10개이므로 8-i까지 비교하면 각 회전때마다 맞게 비교됩니다.

    하나만 더 살펴볼까요.

    i가 1일 때, 즉 2회전에서는
    j는 0부터 8-i, 즉 7까지 비교합니다. 마지막 data[9]에는 1차 정렬된 값이 저장되므로 2회전에서는 data[8]까지만 비교하면 됩니다.
    그래서
    j가 0일 때
    data[0]과 data[1]을
    j가 7일 때
    data[7]과 data[8]을 비교하게 됩니다.

    그리고 i는 회전수를 의미합니다. 회전은 데이터가 총 10개라면 9번만 하면 됩니다.
    i도 0부터 시작이므로
    i는 0일 때 1회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
    i는 1일 때 2회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
    i는 2일 때 3회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
    i는 3일 때 4회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
    .
    .
    i는 6일 때 7회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
    i는 7일 때 8회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.
    i는 8일 때 9회전을 하고 비교합니다. i < 8인지 No이므로 수행을 중지합니다.

    결국 i < 8일 때까지 수행하면 9회전을 하게 됩니다.

    C언어는 배열의 위치가 0부터 시작하기 때문에 이런 차이가 발생함을 염두에 두고 학습하세요.

    종료 기준값을 확인할 때는 반드시 디버깅을 직접 수행한 후 판단을 해야 합니다.
    디버깅 없이 눈으로만 확인할 경우 맞는 것 같아 실수하는 경우과 많기 때문입니다. 이점 학습에 꼭 참고하세요.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.