[c++] 버블 정렬(Bubble Sort) 알고리즘

이번에는 C++를 사용하여 가장 기본적인 정렬 알고리즘 중 하나인 버블 정렬을 구현해 보겠습니다. 버블 정렬은 인접한 두 항목을 비교하여 순서를 정렬하는 간단한 방법으로, 성능이 좋지 않지만 이해하기 쉽고 구현하기가 간단합니다.

알고리즘 설명

버블 정렬 알고리즘은 다음과 같은 단계로 동작합니다.

  1. 배열의 첫 번째 원소부터 마지막 원소까지 인접한 두 원소를 비교합니다.
  2. 인접한 두 원소의 순서가 잘못되어 있을 경우, 두 원소의 위치를 교환합니다.
  3. 위의 과정을 배열 크기에 따라 반복합니다. 한 번의 반복이 끝나면, 가장 큰(또는 작은) 원소가 마지막 위치에 존재하게 됩니다.
  4. 반복을 진행하면서 가장 큰(또는 작은) 원소들을 차례대로 배열의 마지막부터 배치하게 되므로, 가장 큰(또는 작은) 원소들이 차례대로 정렬이 완료됩니다.

구현

다음은 C++를 사용하여 버블 정렬을 구현한 예시 코드입니다.

#include <iostream>
using namespace std;

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                swap(arr[j], arr[j+1]);
            }
        }
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    bubbleSort(arr, n);
    cout << "정렬된 배열: ";
    for (int i=0; i < n; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

위 코드에서 bubbleSort 함수는 정수형 배열을 매개변수로 받아 버블 정렬을 수행하는 함수입니다. main 함수에서는 정수형 배열을 생성하고 bubbleSort 함수를 호출한 뒤, 정렬된 결과를 출력하고 있습니다.

마무리

버블 정렬은 단순하지만 성능이 좋지 않기 때문에 실제로는 잘 사용되지 않습니다. 하지만 알고리즘의 원리를 이해하는 데에는 좋은 예시이며, 학습 목적으로 구현해 보는 것이 도움이 될 수 있습니다.

위의 예시 코드를 참고하여, 다양한 입력에 대해 버블 정렬 알고리즘의 동작을 이해하고 실습해 보시기를 권장합니다.

참고 자료