삽입정렬

비주얼C++/예제모음 2012. 11. 24. 21:19


삽입정렬

 

  예를들어

 

  7 3 5 2 1 8 9 4 6 0

 

  이렇게 있을때

  먼저 두번째 값 3을 정해서 3앞의 숫자들과 비교해서 위치를 옮깁니다.

  여기서는 7과 비교해서 3이 작으므로 바꿉니다. 그러면,

 

  3 7 5 2 1 ...

 

  이렇게 되겠지요?

 

  그다음에 앞의 두번째를 한칸 더 증가시킵니다. 즉 세번째 수 5를 정해서 그 앞의 수 즉, 두번째 첫번째 수와 비교해서 적당한 자리로 옮깁니다. 여기서 적당한

자리란 5와 7을 먼저 비교해서 7이 더 크므로 바꾸고 (3 5 7 ..) 다시 3과 비교해서 3보다 크므로 그대로 둡니다. 이 작업을 계속 해 주면 됩니다. (네번째, 다섯번째

수를 정해서 앞의 숫자와 거꾸로 계속 비교해 가는 것입니다.

 

  설명하기가 참 어렵네요...제가 그래픽 솜씨라도 있으면 그래픽으로 설명해 드릴수도 있을텐데...

 

  소스입니다.

 

      for (int i=1;i<9;i++) // i는 처음부터 끝까지 갑니다.
 for (int j=i-1;j>0;j--)  // j는 i보다 하나 적은 곳부터 처음까지 검색합니다.
  if (num[j]>num[i]) {  // 두수를 비교해서 바꿔줍니다.
   int temp;
            temp = num[j];
   num[i] = num[j];
   num[j] = temp;
  }
 cout << "삽입정렬후 : " << num[0] << " " << num[1] << " " << num[2] << " " << num[3] << " " << num[4] << " " << num[5] << " " << num[6] << " " << num[7] << " " << num[8] << " " << num[9] << "\n";

 

  이해안되시는 부분은 댓글이나 쪽지주세요~

'비주얼C++ > 예제모음' 카테고리의 다른 글

[C++] 완전수 찾기소스  (0) 2014.07.24
선택정렬  (0) 2012.11.24
버블정렬  (0) 2012.11.24


설정

트랙백

댓글