티스토리 뷰

PS/강의

5일차 강의 (14 ~ 15강)

Codecheck 2024. 1. 16. 17:45

정렬I (14강)

*max_element(arr, arr+k) → arr[0], arr[1], ..., arr[k-1]에서 최댓값인 원소의 주소를 반환(+참조)

선택정렬, 버블정렬, 삽입정렬 O(N^2)

 

Merge Sort O(NlogN)

 

Stable Sort

우선순위가 같은 원소들끼리는 원래의 순서를 따라가도록 하는 정렬

 

Quick Sort O(NlogN)

- 코딩테스트에서 STL을 못 쓰게 하고 직접 구현해서 정렬을 사용해야 한다면 Quick Sort 구현하지말고 다른 방식으로 

 퀵소트의 장점은 추가적인 공간이 필요하지 않다는 점, cache hit rate가 높아서 속도가 빠름

→ 추가적인 공간을 사용하지 않고(In-Place Sort) pivot을 제자리로 보내는 방법 필요, stable sort가 아

- 단점 : 퀵소트는 평균적으로 O(NlogN)이지만 최악의경우 O(n^2)

 

정렬II (15강)

Counting Sort

각 수의 등장 횟수를 저장해야 함

수의 범위가 어느정도 한정적일 때에만 사용 가능 (대략 1000만이하)

 

Radix Sort (기수정렬)

자릿수를 이용해서 정렬을 수행하는 알고리즘, 카운팅소트를 응용

코딩테스트때 직접 구현을 해야하는 상황은 없을 것 (개념 이해만 하고 넘어가기)

정수의 거듭제곱을 계산할 땐 오차가 발생할 수 있으므로 되도록 반복문으로 계산하는 것이 좋음

 

Comparison Sort

버블 소트

머지 소트

퀵 소트

 

Non-comparison Sort

카운팅 소트

라딕스 소트

 

코딩 테스트에서는 stl의 sort함수 사용 → 최악의 경우에도 O(NlogN) 보장

기본적으로 stable sort는 아님.

만약 stable sort가 꼭 필요한 경우 stable_sort 사용

pair와 tuple은 앞부터 우선으로 비교하도록 이미 정해져 있음.

 

bool cmp를 만들어서 직접 비교방식을 선택할 수 있음

 

주의사항

- 비교함수는 두 값이 같을 때(혹은 우선순위가 같을 때) false를 반환

- 비교함수의 인자로 stl 혹은 클래스 객체를 전달 시 reference를 사용 (string& a, string& b)

 

'PS > 강의' 카테고리의 다른 글

7일차 강의 (18 ~ 19강)  (0) 2024.01.19
6일차 강의 (16 ~ 17강)  (0) 2024.01.18
4일차 강의요약 (13강)  (0) 2024.01.01
3일차 강의요약 (9강 ~ 12강)  (0) 2023.12.30
2일차 강의요약 (4강 ~ 8강)  (0) 2023.12.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함