만약 배열 마지막이 1이라면
8번에 조건중 마지막에 k가 -1이되어서 11번으로 갔는데
k + 1은 0이 되어서 a[0]에 Key가 들어가는건가요?
안녕하세요 길벗수험서 운영팀입니다.
295쪽 C코드에서 배열의 마지막이 1이라는 것은 배열 a가 a[0], a[1] 두 개의 요소로 이루어졌다는 의미가 됩니다.
그렇다면 for(k=i-1; k>=0; k--) 를 만났을 때,
for(k=0; k>=0; k--) 가 되어 for문 내의 코드를 1회 수행하게 됩니다.
그럼 if문을 만나 a[0]과 key(a[1])을 비교한 후
a[0]>a[1] 보다 크다면 a[1]에 a[0]을 저장하고 for문을 빠져나가(빠져나갈 때 k--를 수행) a[0]=key(기존 a[1])을 저장하며 종료됩니다.
a[1]>a[0] 보다 크다면 break로 for문을 빠져나가(k-- 수행 안함) a[1]=key(a[1]) [의미없음]을 수행하고 종료되죠.
행복한 하루되세요 :)
-
관리자2019-05-28 10:15:48
안녕하세요 길벗수험서 운영팀입니다.
295쪽 C코드에서 배열의 마지막이 1이라는 것은 배열 a가 a[0], a[1] 두 개의 요소로 이루어졌다는 의미가 됩니다.
그렇다면 for(k=i-1; k>=0; k--) 를 만났을 때,
for(k=0; k>=0; k--) 가 되어 for문 내의 코드를 1회 수행하게 됩니다.
그럼 if문을 만나 a[0]과 key(a[1])을 비교한 후
a[0]>a[1] 보다 크다면 a[1]에 a[0]을 저장하고 for문을 빠져나가(빠져나갈 때 k--를 수행) a[0]=key(기존 a[1])을 저장하며 종료됩니다.
a[1]>a[0] 보다 크다면 break로 for문을 빠져나가(k-- 수행 안함) a[1]=key(a[1]) [의미없음]을 수행하고 종료되죠.
행복한 하루되세요 :)