반응형
Quick Sort
function quickSort(arr, left = 0, right = arr.length - 1) {
if(left < right) {
let pivotIndex = pivot(arr, left, right) // 3
// left
quickSort(arr, left, pivotIndex - 1);
// right
quickSort(arr, pivotIndex + 1, right);
}
return arr;
}
function pivot(arr, start = 0; end = arr.length - 1) {
const swap = (arr, idx1, idx2) => {
[arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]];
};
// pivot이 항상 첫번째 요소인걸 확정합니다.
let pivot = arr[start];
let swapIdx = start;
for(let i = start + 1, i <= end; i++) {
if(pivot > arr[i]) {
swapIdx++;
swap(arr, swapIdx, i);
}
}
// pivot을 start에서 swapPoint로 옮깁니다.
swap(arr, start, swapIdx);
return swapIdx;
}
반응형
'코어 > 자료구조 & 알고리즘' 카테고리의 다른 글
[JavaScript 알고리즘] 정렬(Sorting) - 6. Radix Sort (0) | 2021.06.11 |
---|---|
[JavaScript 알고리즘] 정렬(Sorting) - 4. Merge Sort (0) | 2021.06.11 |
[JavaScript 알고리즘] 정렬(Sorting) - 3. Insertion Sort (0) | 2021.06.11 |
[JavaScript 알고리즘] 정렬(sorting) - 2. Selection Sort (0) | 2021.06.10 |
[JavaScript 알고리즘] 정렬(sorting) - 1. Bubble Sort (0) | 2021.06.10 |