본문 바로가기
DSA

정렬 알고리즘

by KWONE 2024. 2. 27.
#include <stdio.h>
#define SIZE 10

int main(void)
{
    int list[SIZE]={3,2,9,7,1,4,8,0,6,5};
    int i,j,temp,least;
    for(i=0; i<SIZE-1; i++)
    {
        least=i;
        
        for(j=i+1; j<SIZE; j++)
            if(list[j]<list[least])
                least=j;
        
        temp=list[i];
        list[i]=list[least];
        list[least]=temp;
    }
    for(i=0;i<SIZE;i++)
        printf("%d ",list[i]);
    printf("\n");
    return 0;
    
}

 

 

중요한 정렬 알고리즘

 

-첫 번째 숫자/ 두번째~마지막 숫자 중 최소값 비교

-두번째~마지막 숫자 중에서 첫번째 숫자보다 작다면 교체

-두번째 숫자/세번째~마지막 숫자 중 최소값 비교 (첫번째 숫자 부터 반복적으로 비교해야함->내부 반복문)

-세번째~마지막 숫자 중에서 두번째 숫자보다 작다면 교체, 그렇지않다면 유지

-위와 같은 과정을 n-1번 반복 (외부 반복문)

 

 

세부사항

<1번째 시행>

i=0 least=0

j=1,j<10,j++

 

{(내부 1번째 시행)

if(list[1]<list[0]) 

->least=j ->least=1

 

temp=list[0]

list[0]=list[1]

list[1]=temp

(list[0]이랑 list[1]교체) ([0]은 3,[1]은2였으므로 2를 첫번째 자리인[0]으로,3을[1]로 교체)

}(현재 배열: 2,3,9,7,1,4,8,0,6,5)

 

{(내부 2번째 시행)

i=1 least=1

j=2

if([2]<[1]) (9,3비교)

->교체할 필요 없음

}

 

{(내부 3번째 시행)

i=2 least=2

j=3

if([3]<[2]) (7,9비교)

위와 같은 방법으로 [3],[2]값 교체

}(현재 배열: 2,3,7,9,