e. 퀵 정렬 (중요)
1) 퀵 정렬이란?
🌟 평균적으로 매우 빠른 속도를 보이는 정렬 알고리즘
- 분할 정복(divide and conquer) 기반
- 재귀적으로 배열을 분할하고 정렬하는 방식으로 동작
👉 분할 정복에 대한 내용은 d. 병합정렬에 작성되어있음
💥 최악의 경우 시간 복잡도가 O(n^2)가 될 수있어 데이터 특성에 따라 잘 사용해야 함
2) 알고리즘
- 분할(Divide): 배열에서 하나의 요소를 기준(pivot)으로 선택, 기준보다 작은 요소들은 왼쪽, 큰 요소들은 오른쪽
- 정복(Conquer): 분할된 부분 배열에 대해 재귀적으로 퀵 정렬을 수행
- 결합(Combine): 아무 작업도 수행할 필요가 없음. 부분 배열이 이미 정렬되어 있기 때문에 별도의 작업이 필요하지 않음
3) 코드
🧡 시간복잡도 복잡한 정도
)
'자료구조와 알고리즘 > Algorithm' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 모던 C++ : 동적 계획법 (85강) (0) | 2024.03.30 |
---|---|
분할 정복(Divide and Conquer) 알고리즘 1 : 이진 탐색 (Binary Search) (0) | 2024.02.22 |
[게임 프로그래머 입문 올인원] A* 길찾기 알고리즘 + Maze project (62강) (0) | 2024.02.19 |
[게임 프로그래머 입문 올인원] 다익스트라 (61강) (0) | 2024.02.19 |
[게임 프로그래머 입문 올인원] 그래프와 알고리즘 : DFS, BFS (58, 59강) (0) | 2024.02.17 |