본문 바로가기

ALGORITHM/자료구조, 알고리즘

Bubble Sort

이번에 리뷰할 코드는 버블 정렬( Bubble Sort ) 알고리즘 코드이다. 구현하기는 간단한 정렬이지만 시간 복잡도 측면에서는 N제곱으로 효율적이지는 않은 정렬 알고리즘이다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
 
using namespace std;
 
void swap(int & a, int & b){    // 인자를 레퍼런스로 받음
    int c = a;
    a = b;
    b = c;
}
 
int main() {
    
    int * arr;  // 동적으로 메모리를 할당할 포인터 변수
    int N = 0;  // 원소의 갯수
    
    cin >> N;         // N을 입력 
    arr = new int[N]; // N * 4 byte 만큼 동적 메모리 할당
    
    
    for(int i=0;i<N;i++){
        cin >> arr[i];
    }
    
    cout << "----- before -----" << endl;
    
    for(int i=0;i<N;i++){
        cout << arr[i] << " ";  // 정렬하기 이전 값 출력
    }
    cout << endl << endl;
    
    for(int i=0;i<N-1;i++){
        for(int j=0;j<N-1-i;j++){
            if(arr[j] > arr[j+1]){ // arr[j] 가 arr[j+1] 보다 더 클경우 swap 함수 호출
                swap(arr[j], arr[j+1]);
            }
        }
    }
    
    cout << "----- after -----" << endl;
    
    for(int i=0;i<N;i++){
        cout << arr[i] << " ";  // 정렬한 이후 값 출력
    }
    cout << endl;
    
    delete [] arr;  // 동적 메모리 해제
    
    return 0;
}
 
 
 

 

 

이것 저것 출력 문을 붙여서 조금 길어 졌지만 버블 정렬 자체 코드는 간결하다.

'ALGORITHM > 자료구조, 알고리즘' 카테고리의 다른 글

Insertion Sort  (0) 2020.04.19
Selection Sort  (0) 2020.04.19
이진 탐색 트리  (0) 2020.04.16