글
삽입정렬
삽입정렬
예를들어
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 |