안녕하세요 길벗 수험서 운영팀입니다.
Left의 시작 값은 1로 고정되지만
Right의 시작 값은 자료의 개수에 따라 달라집니다.
여기서는 자료의 개수가 5이므로 4를 갖고 시작하는 것입니다.
이를 염두에 두고 알고리즘 이해 과정을 다시 한 번 읽어보면서 진행 과정을 살펴보세요.
행복한 하루 되세요 :)
-
관리자2018-12-26 09:10:42
안녕하세요 길벗 수험서 운영팀입니다.
Left의 시작 값은 1로 고정되지만
Right의 시작 값은 자료의 개수에 따라 달라집니다.
여기서는 자료의 개수가 5이므로 4를 갖고 시작하는 것입니다.
이를 염두에 두고 알고리즘 이해 과정을 다시 한 번 읽어보면서 진행 과정을 살펴보세요.
행복한 하루 되세요 :)
-
관리자2019-01-23 10:17:59
안녕하세요 길벗 수험서 운영팀입니다.
순서도를 기준으로 다시 설명 드리겠습니다.
배열 d[5]에 5개의 값이 저장되었다고 가정하겠습니다.
left는 배열의 시작 위치 1이 저장됩니다. (C에서는 0)
right는 배열의 끝 위치 5가 저장됩니다. (C에서는 4)
유형1과 비교했을 때, 유형1은
1회전 ->
2회전 ->
3회전 ->
4회전 ->
이런식으로 진행하였다면,
유형2는
1회전 ->
2회전 <-
3회전 ->
4회전 <-
이런식으로 진행됩니다.
1회전 때는 left(1)부터 right-1(4)까지 반복(첫번째 반복문)하면서 비교를 D[i]>D[i+1](순서도 빈칸1번)로 하니까 1회전때 비교는
d[1]>d[2], d[2]>d[3], d[3]>d[4], d[4]>d[5] 이렇게 되죠.
(순서도 빈칸2번에서 right=shift를 수행하면 right는 4가 됩니다.)
2회전 때는 right(4)부터 left+1(2)까지 반복(두번째 반복문)하면서 비교를 D[i-1] > D[i](순서도 빈칸3번)로 하니까 2회전때 비교는
d[3]>d[4], d[2]>d[3], d[1]>d[2] 이렇게 됩니다.
이러한 순서대로 진행되게 됩니다.
유형1번과 비교했을 때 반복문을 추가하여 역순 검색을 한번 더 했을 뿐 달라질 것은 없으니, 디버깅해보면서 각 변수가 어떤식으로 활용되었는지 확인해보세요.
행복한 하루 되세요 :)
-
*2019-01-21 18:53:07
Left,right 의미를 잘 모르겠습니다.
Left=1, right=4이면
Left=1에서 right=4까지 버블정렬하라는건가요?
의미 설명 부탁드립니다.