티스토리 뷰

반응형


안녕하세요 이번엔 다양한 정렬법중 선택정렬을 C언어로 구현해보겠습니다.


선택정렬이란, 배열내의 모든 항을 순차적으로 탐색하여 가장 작은 값을 제일 앞의 값과 바꿔가며 정렬하는 방법입니다.


선택정렬은 다른 정렬에 비해 비교적 구현이 쉽지만, 속도가 느린 단점이 있습니다.


다음은 소스코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
int main(){
    int arr[5]={135629};
    int min=100;
    int min_index,temp;
    for(int i=0;i<5;i++){
        min=100
        for(int j=i;j<5;j++){
            if(arr[j]<min){
                min=arr[j];
                min_index=j;
            }
        }
        temp=arr[min_index];
        arr[min_index]=arr[i];
        arr[i]=temp;
    }
    for(int i=0;i<5;i++){
        printf("%d\n",arr[i]);
    }
    
    return 0;
}
cs

우선, 랜덤한 크고작은 수를 arr배열에 초기화 해줍니다.


2중 루프를 통해 두번째 for문에서 배열 내의 값들을 순차적으로 탐색하여 가장 작은 값과 그 인덱스 값을


변수 min과 min_index에 저장합니다.


반복이 끝나면 i번째 항과 가장 작은 값인 min_index번째 항을 swap합니다.


그럼 가장 작은 값이 가장 앞으로 오게되고 이 과정이 반복되면 순차적으로 정렬이 됩니다.


13 5 6 2 9


2 5 6 13 9


2 5 6 9 13


위와 같은 식으로 진행되어 출력을 확인하면 



다음과 같이 정렬이 매우 잘 되었음을 알 수 있습니다.



반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday