Computer Science/Algorithm

Insertion sort(삽입 정렬)

해피단무지 2020. 8. 31. 17:18

Insertion Sort

- 밀어서 삽입정렬이라고 이해하자

#include <stdio.h>
#include <stdlib.h>

void insertionSort(int* arr, int size)
{
    int i, j;
    int key;

    for( i=1; i<size; i++ )
    {
        key = arr[i];
        for( j=i-1; j>=0; j-- )
        {
            if( key < arr[j] )
                arr[j+1] = arr[j];

            else {
                //arr[j+1] = key; (X)
                break;
            }
        }
        arr[j+1] = key; // key가 제일 작아서 맨 앞애까지 오는 경우
    }

    for( i=0; i<size; i++ )
        printf("%d ", arr[i]);

}
int main (void)
{
    int size;
    int* arr;

    scanf("%d", &size);

    for ( int i=0; i<size; i++ )
        scanf("%d", &arr[i]);

    insertionSort(arr, size);
}