TEST/자료구조와 함께 배우는 알고리즘 입문(C언어)

<6> Q7. 자료구조와 함께 배우는 알고리즘 입문 (C언어)

도라몬즈 2021. 1. 23. 19:53
#include <stdio.h>
#include <stdlib.h>
#define swap(type,x,y)do{type t=x;x=y;y=t;}while(0)

void selection(int a[],int n)
{
    int i,j,k;
    for(i=0;i<n-1;i++){
        for(k=0;k<i;k++)
        printf("   ");
        printf("*  ");
        int min=i;
        for(j=i+1;j<n;j++)
        if(a[j]<a[min])
        min=j;
        for(k=i+1;k<min;k++)
        printf("   ");
        printf("+  ");
        for(k=min+1;k<n;k++)
        printf("   ");
        printf("\n");
        for(k=0;k<n;k++)
        printf("%d  ",a[k]);
        printf("\n");
        swap(int, a[i],a[min]);
        
    }
}

int main(void)
{
    int i, nx;
    int *x;
    puts("단순 삽입 정렬");

    printf("요소 개수 : ");
    scanf("%d", &nx);
    x = calloc(nx, sizeof(int));

    for (i = 0; i < nx; i++)
    {
        printf("x[%d] : ", i);
        scanf("%d", &x[i]);
    }

   selection(x, nx);

    puts("오름차순으로 정렬했습니다.");
    for (i = 0; i < nx; i++)
        printf("x[%d] = %d\n", i, x[i]);

    free(x);

    return 0;
}