코드가 길어 행을 줄였습니다. 이렇게 하면.. 예쁘지는 않지만~ (사랑스러워~)
삽입정렬은.. 마치 [왕자와 거지]게임 같아서 한번 내동댕이 쳐진 숫자는 밑바닥에서부터 자리를 찾아 쏙 넣어진답니다..(-_-?)
리스트를 이용한 삽입정렬은 링크를 참조하세요(http://topnanis.tistory.com/176)
그림을 보면-
#include <stdio.h>
#include <string.h> //memmove함수사용
int main(void)
{
int temp=NULL;
int data_set[]={8,6,7,9,4,3,5,2,1,10};
for(int i=0; i<9; i++)
{
if(data_set[i-1]>data_set[i]) temp=data_set[i]; //정렬되지 않은 수를 temp에 태워 처음으로 보냄
else continue;
for(int j=0; j<i; j++)
{
if(temp<data_set[j]) //자리를 찾았다면
{ // 이사 될 자리- 예전자리 범위를 전체 우로 일보.
memmove(&data_set[j+1], &data_set[j], sizeof(data_set[0])*(i-j));
data_set[j]=temp;
break;
}
}
}
for(int i=0; i<10; i++) printf("%d ",data_set[i]);
return 0;
}
사로자바님의 말에 따르면 리소스의 사용은 [크기비교]가 아닌 [교환]에서 일어나는 것이랍니다. 교환횟수를 비교해 보았을때 삽입정렬은 뽀글정렬과 비교가 안될정도로 우수한 성능을 자랑하는군요 :D
'2_ 바삭바삭 프로그래밍' 카테고리의 다른 글
C - 알고리즘 - 퀵정렬(라이브러리) (0) | 2010.05.29 |
---|---|
C - 알고리즘 - 퀵정렬 (1) | 2010.05.22 |
C - 알고리즘 - 버블정렬 (0) | 2010.05.14 |
C - 싱글링크드리스트(문자열) (0) | 2010.05.13 |
타 사용자의 .vimrc 파일 받아서 적용하는 방법 (1) | 2010.05.09 |