티스토리 뷰

반응형



안녕하세요 , 이번엔 C언어 알고리즘의 기초인 버블정렬(bubble sort)를 C로 구현하겠습니다.


정렬에는 삽입정렬, 버블정렬, 선택정렬 등 여러가지 방법이 있습니다.


그 중 버블정렬이란, 배열 내의 처음부터 인접한 두 데이터를 비교하며 값이 큰 데이터를 뒤로 바꾸면서


배열의 끝까지 반복하여 정렬하는 법입니다. 


여러 정렬법중에 코드는 가장 간단하지만 시간이 가장 오래걸린다는 단점이 있습니다.


이를 C로 구현해보았습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main(){
    int arr[5]={10315121};
    int temp; //swap을 위해 선언 
    
    for(int i=0;i<5;i++){
        
        for(int j=0;j<4-i;j++){
        
            if(arr[j]>arr[j+1]){
            
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp; 
            }
        }
    }
    
    for(int i=0;i<5;i++)
        printf("%d ",arr[i]);
    
    
    return 0;
}
cs



위와 같은데요, arr라는 배열을 선언해주고


for문을 두개 사용했습니다.


최초에 두번째 for문에 들어가면 아래 처럼 순차적으로 진행되며 


배열 내의 가장 큰 수가 가장 오른쪽으로 가게 됩니다.


10 3 15 12 1


3 10 15 12 1


3 10 12 15 1


3 10 12 1 15 (가장 큰 수인 15가 가장 오른쪽)


이때부터 마지막 15를 제외한 앞의 네개의 항만을 다시 앞과정을 반복합니다. (그래서 두번째 for문의 조건은 j<4-i가 됨)


3 10 1 12 15


3 1 10 12 15


1 3 10 12 15


이렇게 진행되어 오름차순으로 매우 잘 정렬됩니다. 


이 소스를 실행하게 되면



위와 같이 잘 정렬이 되는 것을 알 수 있습니다.






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