언어 자료구조 알고리즘/디딤돌 정렬 알고리즘 (C언어)

4.2 삽입 정렬 알고리즘 구현

언제나휴일 2016. 11. 25. 16:17
반응형

4.2 삽입 정렬 알고리즘 구현


 삽입 정렬 알고리즘을 구현합시다. 시뮬레이션 함수 등은 앞과 같으므로 설명을 생략할게요.

void insertion_sort(Element *base, int n, Compare compare)

{

 두 개의 반복문에서 사용할 변수를 선언하고 교환에 사용할 임시 변수도 선언할게요.

    int i = 0, j=0;

    Element temp;

 외부 반복문은 정렬할 범위를 넓혀나가는 것입니다. 따라서 i 1부터 n까지 점진적으로 증가할게요.

    for(i=1; i<n; i++)

    {

 내부 반복문은 새롭게 범위에 포함한 원소의 위치를 찾아야 합니다. 따라서 j i로 초기화하고 점진적으로 줄여나갑니다.

        for(j=i; j>0; j--)

        {

 만약 j번째 원소가 앞의 원소보다 크면 자리를 교환합니다.

            if(compare(base[j-1],base[j])<0)

            {

                temp = base [j-1];

                base[j-1] = base [j];

                base[j] = temp;

            }

 그렇지 않을 때는 반복문을 탈출합니다.

            else{    break;    }

        }

    }

}

 

반응형