본문 바로가기

Tech/Algo

[알고리즘] 버블 정렬 (bubble sort)

버블 정렬은 이름 그대로 거품 (bubble)이 수면 위로 올라가는 것 처럼 배열 요소가 움직입니다.
버블 정렬은 다음과 같은 알고리즘으로 배열을 오름차순으로 정렬 합니다.
#include <iostream>
using namespace std;

int bubbleSort(int A[], int N) {
    int sw = 0;
    bool flag = 1; // swap이 한번도 없을 경우, operation 중단!
    for(int i = 0; flag; i++) {
        flag = 0;
        for(int j = N - 1; j >= i + 1; j--) {
            if(A[j] < A[j-1]) {
                swap(A[j], A[j - 1]);
                flag = 1;
                sw++;
            }
        }
    }
    return sw;
}

int main() {
    int A[100], N, sw;
    cin >> N;
    for(int i = 0; i < N; i++) cin >> A[i];

    sw = bubbleSort(A, N);
    for(int i = 0; i < N; i++) {
        if (i) cout << " ";
        cout << A[i];
    }
    cout << endl;
    cout << sw << endl;
    return 0;
}