Sort 함수
- sort 알고리즘은 <algorithm> 헤더 파일에 속함
- sort(start, end)를 이용해 [start, end) 범위의 인자를 오름차순으로 정렬
- Quick sort 기반으로 구현되어 있어 O(nlogn)의 평균 시간복잡도를 가짐
1차원 배열에서 vector를 사용하는 경우,
→ begin() : 리스트의 시작 주소 리턴
→ end() : 리스트의 끝 주소 리턴(마지막 값보다 한 칸 뒤 위치)
이므로, sort(arr.begin(), arr.end()) 의 형태로 정렬 가능
배열에서 쌍으로 값을 저장해야 할 경우(ex. 좌표),
→ vector<pair<[type], [type]>> 사용하면 됨
→ 값을 줄 때는 make_pair(value1, value2) 사용
→ pair에 저장한 값은 .first , .second 로 불러올 수 있음
→ pair에서 sort함수 사용하는 경우 첫번째 원소 기준 정렬 + 첫번째 원소가 동일할 경우 두번째 원소로 정렬
예제 - 백준 11651
https://www.acmicpc.net/problem/11651
11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, x, y;
vector<pair<int, int>> cor;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> x >> y;
cor.push_back(make_pair(y, x));
}
sort(cor.begin(), cor.end());
for (int i = 0; i < N; i++) {
cout << cor[i].second << " " << cor[i].first << "\\n";
}
return 0;
}
'C++' 카테고리의 다른 글
C++ string 클래스 (0) | 2021.07.21 |
---|---|
C++ memset 사용법 (0) | 2021.07.21 |