본문 바로가기
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,