1. C++ sort의 속성
a.<algorithm> 헤더에 속함
b.시간복잡도 NlogN(퀵정렬 기반)
c. 메모리를 기반으로 정렬하기때문에, 배열이나 vector등에 사용할 수 있음
d. 기본적으로는 오름차순으로 설정되어 있고, 사용자가 직접 조작 할 수 있음.
2. 기초적인 C++ sort의 사용법 (백준 2750번 기반으로)
a. 기초적인 방법
sort(arr,arr+n); | 배열의 오름차순 정렬(n개의 칸을 가진) |
sort(v.begin(), v.end()); | 벡터의 오름차순 정렬 |
sort(arr,arr+n,cmp); | 배열의 사용자 정의 함수 정렬 (주로 구조체에서 사용) |
sort(v.begin(), v.end(), cmp); | 벡터의 사용자 정의 함수 정렬 (주로 구조체에서 사용) |
sort(arr,arr+n, greater<자료형>()); | 배열의 내림차순 정렬 |
sort(v.begin(), v.end(), greater<자료형>()); | 벡터의 내림차순 정렬 |
b. 백준 2750번으로 예를 든 기초적인 배열의 정렬
c. 벡터의 정렬
1. 위 코드에 vector 헤더파일을 추가한다.
2. 입력과 출력 부분을 vector에 적합하게 고친다
3. sort(arr,arr+n)대신 sort(v.begin(), v,end())로 변경한다.
벡터의 선언과 입출력 부분의 경우 다음 링크 참조.
C++ vector 기초
1. Vector란? Vector는 배열과 deque의 장점을 모두가지고 있는 자료구조라 생각하면 편리하다. 더욱 쉽...
blog.naver.com
3. 구조체에 대한 C++ sort의 사용법(사용자 정의 함수 정렬) (백준 11650번 기반으로)
a. cmp의 구성
11650번 코드에서 사용하는 cmp, x 우선 오름차순 정렬이다.
중요한 사항
1. 함수의 반환형은 bool이고, return도 불 형태로(대체로 부등호가 유용함) 해야한다.
2. 함수의 매개변수는 정렬할 함수의 자료형인 두개의 변수이다.
3. 매개변수 두 개는 배열이나 벡터의 순서를 의미한다. (위의 예시에서는 a가 b보다 앞에있었음)
4. 리턴되는 값이 true면 순서를 바꾸지 않고, 리턴되는 값이 false면 순서를 바꾼다.
b. 코드 예시(백준 11650번)
'알고리즘' 카테고리의 다른 글
백준 7576번 토마토 [C++] BFS/예상되는 실수/접근방식/풀이법/코드 (0) | 2022.01.31 |
---|---|
가장긴 증가하는 부분순열(LIS)(N^2) (0) | 2021.08.07 |
2차원 Vector의 정렬(C++) (0) | 2021.08.07 |
구조체Vector 와 2차원Vector (C++) (0) | 2021.08.07 |
Vector 기초(C++) (0) | 2021.08.06 |