[c++] 정렬 알고리즘

정렬 알고리즘은 데이터를 특정한 기준에 따라 순서대로 나열하는 알고리즘입니다. C++에는 다양한 정렬 알고리즘이 내장되어 있습니다. 이번 포스트에서는 C++의 다양한 정렬 알고리즘을 살펴보겠습니다.

목차

  1. 버블 정렬 (Bubble Sort)
  2. 선택 정렬 (Selection Sort)
  3. 삽입 정렬 (Insertion Sort)
  4. 퀵 정렬 (Quick Sort)
  5. 합병 정렬 (Merge Sort)

1. 버블 정렬 (Bubble Sort)

버블 정렬은 두 인접한 요소를 비교하고 순서대로 정렬하는 방식으로 동작합니다. 요소들을 반복적으로 비교하여 정렬될 때까지 순회합니다.

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> arr = {5, 2, 6, 1, 3, 4};
    std::sort(arr.begin(), arr.end()); // 오름차순 정렬
    // std::sort(arr.begin(), arr.end(), std::greater<int>()); // 내림차순 정렬
    for (int num : arr) {
        std::cout << num << " ";
    }
    return 0;
}

2. 선택 정렬 (Selection Sort)

선택 정렬은 주어진 리스트에서 최솟값을 찾아 맨 앞의 요소와 교환하는 방식으로 정렬하는 알고리즘입니다.

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> arr = {5, 2, 6, 1, 3, 4};
    std::sort(arr.begin(), arr.end()); // 오름차순 정렬
    // std::sort(arr.begin(), arr.end(), std::greater<int>()); // 내림차순 정렬
    for (int num : arr) {
        std::cout << num << " ";
    }
    return 0;
}

3. 삽입 정렬 (Insertion Sort)

삽입 정렬은 리스트를 순차적으로 순회하면서 해당 요소를 이미 정렬된 부분과 비교하여 적절한 위치에 삽입하는 방식으로 동작합니다.

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> arr = {5, 2, 6, 1, 3, 4};
    std::sort(arr.begin(), arr.end()); // 오름차순 정렬
    // std::sort(arr.begin(), arr.end(), std::greater<int>()); // 내림차순 정렬
    for (int num : arr) {
        std::cout << num << " ";
    }
    return 0;
}

4. 퀵 정렬 (Quick Sort)

퀵 정렬은 분할 정복 알고리즘을 활용하여 평균적으로 O(n log n)의 시간 복잡도를 보이는 빠른 정렬 알고리즘입니다.

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> arr = {5, 2, 6, 1, 3, 4};
    std::sort(arr.begin(), arr.end()); // 오름차순 정렬
    // std::sort(arr.begin(), arr.end(), std::greater<int>()); // 내림차순 정렬
    for (int num : arr) {
        std::cout << num << " ";
    }
    return 0;
}

5. 합병 정렬 (Merge Sort)

합병 정렬은 분할 정복 알고리즘을 사용하여 리스트를 절반으로 나눈 뒤, 각각을 정렬하고 합병하여 완전히 정렬된 리스트를 생성하는 알고리즘입니다.

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> arr = {5, 2, 6, 1, 3, 4};
    std::sort(arr.begin(), arr.end()); // 오름차순 정렬
    // std::sort(arr.begin(), arr.end(), std::greater<int>()); // 내림차순 정렬
    for (int num : arr) {
        std::cout << num << " ";
    }
    return 0;
}

이 포스트에서는 C++에 내장된 다양한 정렬 알고리즘에 대해 알아보았습니다. 이 알고리즘들을 적절히 활용하여 데이터를 효과적으로 정렬할 수 있습니다.

참고 자료