버블 정렬은 이름 그대로 거품 (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;
}