책 내용 질문하기
삽입정렬 중 이해가 가지않아 질문드립니다
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
278
조회수
49
작성일
2017-07-13
작성자
탈퇴*원
첨부파일

삽입정렬을 할때 key값을 지정하고 key값과 key값 이전의 값들을 비교하고 교환하는 방식으로 이루어지는 것은

이해를 했습니다 그런데 알고리즘을 보고 비칸을 채워 넣는데 제가 생각하는 것과 달라 c언어코드를 보았는데

다른 부분은 모두 이해가 됩니다 그런데

검은 동그라미 10번 부터 11번까지의 내용이 이해가 안갑니다

예를 들어 이렇게 교환을 하게 되면

80 50 60 20 40 이라고 할때

50을 키값이 되고

a[k]>key 값은 80>50이기때문에

a[k+1]=a[k]가 되는데 이렇게 되면 a[1] 값이 80이 됩니다.

80 80 60 20 40 이렇게 되고,

그러고 나서 a[k]에 값이 들어가는 부분이 없어서

혼란을 겪게 되었습니다.

디버깅 과정을 하나하나 짚어 보았는데도 결과는 마찬가지였구요

교환되는 과정중에 a[k]값은 어디서 받는 지 알려주셨으면 합니다.

답변
2017-07-14 09:30:59

안녕하세요.

80 50 60 20 40이 저장된 경우

맨 처음 i는 1부터 시작합니다.

KEY = A[i]에 의해 KEY에는 50이 저장됩니다. C언어는 배열의 위치가 0부터 시작이므로 A[i], 즉 A[1]에는 50이 기억되어 있습니다.

⑧번에 의해 k는 i-1, 즉 0에서 시작하여 k가 0보다 크거나 같을 때까지 반복합니다.

현재 k는 0이므로 반복문을 수행합니다.

a[k]와 key를 비교합니다. a[k], 즉 a[0]은 80이고 key는 50이므로

⑩번을 수행하여 a[k+1], 즉 a[1]에 80을 저장합니다.

80 80 60 20 40인 상태가 됩니다.

⑧번으로 돌아와 k--에 의해 k는 -1이 됩니다. k가 0보다 크거나 같을 때까지 반복하므로 더이상 반복하지 않고 반복문을 빠져나옵니다.

⑪번을 수행하여

a[k+1] = key에 의해 a[k+1]에 key를 저장하는데, 앞서 반복문에 의해 k는 -1을 가지고 있습니다. 그러므로

a[k+1] = key는 a[0] = key와 같습니다. 즉 key의 값 50을 a[0]에 저장하므로

50 80 60 20 40인 상태가 됩니다.

280쪽 사이드 전문가의 조언에서 설명된 내용을 다시 한 번 확인하세요.

반복문의 반복 변수가 반복문 바깥쪽에서 사용되는 경우는 반복 변수의 값이 유지되어 사용된다는 것을 염두에 두고 확인하시면 좀 더 이해가 쉽습니다.

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

  • *
    2017-07-14 09:30:59

    안녕하세요.

    80 50 60 20 40이 저장된 경우

    맨 처음 i는 1부터 시작합니다.

    KEY = A[i]에 의해 KEY에는 50이 저장됩니다. C언어는 배열의 위치가 0부터 시작이므로 A[i], 즉 A[1]에는 50이 기억되어 있습니다.

    ⑧번에 의해 k는 i-1, 즉 0에서 시작하여 k가 0보다 크거나 같을 때까지 반복합니다.

    현재 k는 0이므로 반복문을 수행합니다.

    a[k]와 key를 비교합니다. a[k], 즉 a[0]은 80이고 key는 50이므로

    ⑩번을 수행하여 a[k+1], 즉 a[1]에 80을 저장합니다.

    80 80 60 20 40인 상태가 됩니다.

    ⑧번으로 돌아와 k--에 의해 k는 -1이 됩니다. k가 0보다 크거나 같을 때까지 반복하므로 더이상 반복하지 않고 반복문을 빠져나옵니다.

    ⑪번을 수행하여

    a[k+1] = key에 의해 a[k+1]에 key를 저장하는데, 앞서 반복문에 의해 k는 -1을 가지고 있습니다. 그러므로

    a[k+1] = key는 a[0] = key와 같습니다. 즉 key의 값 50을 a[0]에 저장하므로

    50 80 60 20 40인 상태가 됩니다.

    280쪽 사이드 전문가의 조언에서 설명된 내용을 다시 한 번 확인하세요.

    반복문의 반복 변수가 반복문 바깥쪽에서 사용되는 경우는 반복 변수의 값이 유지되어 사용된다는 것을 염두에 두고 확인하시면 좀 더 이해가 쉽습니다.

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

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