[Sort] Quick Sort

2020. 9. 7. 00:04Algorithm

Quick Sort


pivot이라는 기준점을 잡은 뒤, 요소가 이 pivot보다 작다면 왼쪽, 크다면 오른쪽으로 자리를 이동시킨다.
문제를 작은 2개의 문제로 분리한 후, 해결하고 다시 합치는 분할 정복 방법을 사용한다.
시간복잡도는 O(nlog(n))

 

구현한 코드

function quick(array) {
    // 임의로 배열의 맨 끝 요소를 pivot으로 설정하고
    // pivot을 기준으로 왼쪽 / 오른쪽으로 나누기
    // pivot보다 작다면 왼쪽 배열에 / 크다면 오른쪽 배열에 넣기
    // 정렬된 배열을 왼쪽, pivot, 오른쪽 순서대로 합쳐서 리턴

    if(array.length < 2) {
        return array;
    }

    const pivot = array[array.length-1];
    let left = [];
    let right = [];

    for(let i = 0; i < array.length-1; i++) {
        if(array[i] < pivot) {
            left.push(array[i]);
        } else {
            right.push(array[i]);
        }
    }

    return [...quick(left), pivot, ...quick(right)];
}

 

 

 

 

 

'Algorithm' 카테고리의 다른 글

[Sort] Merge Sort  (0) 2020.09.07
[Sort] Selection Sort  (0) 2020.09.06
[Sort] Bubble Sort  (0) 2020.09.06
[Toy] 유클리드 호제법  (0) 2020.06.11
[Toy] nthFibonacci  (0) 2020.05.18