728x90
C++에서 정렬 알고리즘은 직접 구현보다는 STL에서 제공하는 sort( ) 함수를 사용하는 것이 효율적입니다.
sort( ) 함수는 <algorithm> 헤더를 include 하면 사용하실 수 있습니다.
이 함수의 시간 복잡도는 nlogn 입니다.
intro sort라는 정렬 방식을 바탕으로 구현되어 heap sort와 insertion sort를 섞은 방식입니다.
최악의 경우 n^2 시간복잡도를 가지는 quick sort 와 달리 최악의 경우에도 O(nlogn)을 보장합니다.
#include <iostream>
#include <algorithm>
using namespace std;
bool desc(int a, int b) {
return a>b;
}
int main() {
int arr[10] = {3, 5, 9, 7, 8, 1, 4, 2, 10, 6};
vertor<int> arr2;
int arr3[10] = {3, 5, 9, 7, 8, 1, 4, 2, 10, 6};
arr.push_back(3); arr.push_back(2); arr.push_back(1); arr.push_back(0);
sort(arr, arr+10);
sort(arr2.begin(), arr2.end());
sort(arr3, arr3+10, desc);
for(int i=0 ; i<10 ; i++){
cout << arr[i] << " ";
}
for(int i=0 ; i<10 ; i++){
cout << arr2[i] << " ";
}
for(int i=0 ; i<10 ; i++){
cout << arr3[i] << " ";
}
return 0;
}
<algorithm> 헤더를 include 한 뒤에 sort(begin, end) 와 같이 사용하면, 오름차순으로 자동 정렬됩니다.
범위가 begin <= arr < end 이므로 종료 index가 아닌 배열의 크기를 넣어주어야 합니다.
Vector의 경우 begin()과 end() 함수를 사용하면 편리하게 정렬이 가능합니다.
내림차순으로 정렬하고 싶다면 sort( ) 함수의 세번 째 인자 값으로 'desc' 함수를 정의하여 넣어주면 됩니다.