[c++] 정렬 알고리즘
정렬 알고리즘은 데이터를 특정한 기준에 따라 순서대로 나열하는 알고리즘입니다. C++에는 다양한 정렬 알고리즘이 내장되어 있습니다. 이번 포스트에서는 C++의 다양한 정렬 알고리즘을 살펴보겠습니다.
목차
- 버블 정렬 (Bubble Sort)
- 선택 정렬 (Selection Sort)
- 삽입 정렬 (Insertion Sort)
- 퀵 정렬 (Quick Sort)
- 합병 정렬 (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++에 내장된 다양한 정렬 알고리즘에 대해 알아보았습니다. 이 알고리즘들을 적절히 활용하여 데이터를 효과적으로 정렬할 수 있습니다.