알고리즘
2차원 Vector의 정렬(C++)
마느아
2021. 8. 7. 08:46
반응형
sort함수 자체에 대해서 잘 모르거나, 오름차순이 아닌 다른 방법으로 정렬하고 싶으면 이 링크를 보고 오자.
C++ sort 사용법(STL)
1. C++ sort의 속성 a. 헤더에 속함 b.시간복잡도 NlogN(퀵정렬 기반) c. 메모리를 기반으로 정렬하기때문에, 배열이나 vector등에 사용할 수 있음 d. 기본적으로는 오름차순으로 설정되어 있고, 사용
learncom1234.tistory.com
1. 벡터의 정렬
1차원 벡터 arr이 있다고 할때, arr벡터를 정렬하는 방법은
sort(arr.begin(),arr.end());로 정렬가능하다.
2. 2차원 벡터의 안쪽 벡터 정렬
sort(arr[i].begin(),arr[i].end());로 정렬가능하다.
두 i는 반드시 같은 i 여야 한다.
3. 2차원 벡터의 정렬
2차원 벡터 arr이 있다고 할때, 그 arr에 속해있는 안쪽 벡터의 길이 순으로 정렬하는 경우가 많다.
다음과 같이 cmp함수를 통해서 안쪽 벡터의 size의 대소관계를 비교하게 사용자 지정 함수 cmp를 설정하고, 1차원 벡터와 동일한 방식으로 정렬할 수 있다.
2차원 벡터의 정렬에서 주로 사용하는 cmp함수는 다음과 같다.
return(a.size()<b.size()); | 안쪽 벡터의 길이순 정렬(가장 많이 씀) |
return(a.front()<b.front()); | 맨 앞에 값을 기준으로 오름차순 정렬(내부 정렬후 사용) |
return(a[i]<b[i]); | 몇번째 원소를 가지고 정렬(모든 안쪽 벡터가 가지고 있어야함) |
4. 2차원 벡터의 정렬의 쓰임
DFS와 BFS에서의 인접리스트에서 가장 유용하게 사용된다.
그 외에도 2차원 배열을 가지고 정렬을 하고 싶지만, 메모리 문제로 2차원 벡터를 써야할때 언제나 유용하다.
5. 예시문제
추후 업로드할 DFS와 BFS에서 보여드릴 예정입니다.
반응형