266순서도에
J<10-i
i<9면
옆에 c언어코드는
J<9-i
i<8
아닌가요 왜 8-i인가요
안녕하세요.
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-06-01 09:41:59
안녕하세요.
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부터 시작하기 때문에 이런 차이가 발생함을 염두에 두고 학습하세요.
종료 기준값을 확인할 때는 반드시 디버깅을 직접 수행한 후 판단을 해야 합니다.
디버깅 없이 눈으로만 확인할 경우 맞는 것 같아 실수하는 경우과 많기 때문입니다. 이점 학습에 꼭 참고하세요.
오늘도 즐거운 하루 되세요.