728x90
[Algorithm] 5-(2). 정렬 - 퀵 정렬
기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방법이다. 일반적 상황에서 가장 많이 사용된다.
병합 정렬과 더불어 대부분 프로그래밍 언어의 정렬 라이브러리의 근간이 되는 알고리즘이며, 가장 기본적 퀵 정렬은 첫 번째 데이터를 기준 데이터(피봇)로 설정한다.
피봇값 설정 -> 정렬 -> 분할 -> 왼쪽 데이터 퀵정렬 -> 오른쪽 데이터 퀵정렬
5 7 9 0 3 1 6 2 4 8
첫번째 원소가 피봇으로 설정된다.
이상적인 경우 시간 복잡도가 O(NlogN)이 될 수 있다. 데이터 확인 개수가 절반씩 줄어들기 때문이다. 그러나, 최악의 경우 O(n2)의 시간 복잡도를 가진다.
728x90
'Problem Solving' 카테고리의 다른 글
[백준] 1918 후위 표기식 python 알고리즘 문제 (0) | 2022.05.15 |
---|---|
[Algorithm] 5-(3). 정렬 - 계수 정렬 (0) | 2022.04.27 |
[Algorithm] 5-(1) 정렬 - 선택 정렬, 삽입 정렬 (0) | 2022.04.27 |
[Algorithm] 4-(4) BFS(Breadth-First Search) (0) | 2022.04.27 |
[Algorithm] 4-(3). DFS(Depth-First Search) (0) | 2022.04.27 |
댓글