#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,
'DSA' 카테고리의 다른 글
포인터 연습 예제3 (참조에 의한 호출, call-by-reference)(함수에서 2개 이상의 값 동시 반환) (1) | 2024.06.04 |
---|---|
소수 찾기 함수 (0) | 2024.05.26 |
배열 연습2 (선택정렬 알고리즘)(Selection Sort Algorithm) (0) | 2024.05.26 |
배열 최대값 찾기 (0) | 2024.05.25 |
피보나치 수열 (반복구조), (순환구조) (0) | 2024.02.15 |