2025/02/10
6회차 목표
1) Udemy 강의:
- 섹션 15: 퀵 정렬
2) 실습:
- 강의의 문제 구현
- 프로그래머스 문제
TIL
1️⃣ 퀵 정렬 (Quick Sort)
📌 작동 원리
- 분할 정복(Divide and Conquer) 방식을 사용하여 배열을 정렬
- 기준이 되는 피벗(pivot)을 선택하고, 이를 기준으로 작은 값과 큰 값으로 분할하여 정렬을 수행
📌 알고리즘 동작 과정
- 배열에서 하나의 요소를 피벗으로 선택한다.
- 피벗을 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 이동시킨다.
- 왼쪽과 오른쪽 부분 배열에 대해 재귀적으로 퀵 정렬을 수행한다.
- 모든 부분 배열이 정렬되면 최종적으로 정렬된 배열이 완성된다.
📌 구현 코드
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[Math.floor(arr.length / 2)];
const left = arr.filter((num) => num < pivot);
const middle = arr.filter((num) => num === pivot);
const right = arr.filter((num) => num > pivot);
return [...quickSort(left), ...middle, ...quickSort(right)];
}
// 실행 예제
let arr = [38, 27, 43, 3, 9, 82, 10];
console.log(quickSort(arr)); // [3, 9, 10, 27, 38, 43, 82]
📌 시간 복잡도
최악의 경우 (역순 정렬) | O(n^2) |
평균적인 경우 | O(nlogn) |
최선의 경우 (이미 정렬된 상태) | O(nlogn) |
📌 공간 복잡도 O(n)
O(n) (재귀 호출에 따른 추가적인 메모리 사용)
📌 특징
- 일반적으로 정렬 속도가 빠르고 효율적인 정렬 알고리즘 중 하나이다.
- 불균형한 피벗 선택 시 성능이 저하될 수 있으므로 랜덤 피벗을 선택하는 방식도 존재한다.
느낀 점
파이팅
'모각코 > 2024' 카테고리의 다른 글
2024 동계 모각코 회고 (0) | 2025.02.17 |
---|---|
2024 동계 모각코 5회차 (0) | 2025.02.04 |
2024 동계 모각코 4회차 (4) | 2025.02.01 |
2024 동계 모각코 3회차 (1) | 2025.01.20 |
2024 동계 모각코 2회차 (0) | 2025.01.13 |