quickSort

정성준 (Seongjun Chung)·2021년 9월 9일
0

JS algorithms

목록 보기
3/3
const quickSort = function (arr) {
  // pivot 하나를 정하여 pivot이 든 배열로 만들어둔다. 여기선 arr[0]로 정하겠다.
  // 재귀적 호출의 종료조건을 위해 배열의 길이가 2보다 작으면 함수를 종료한다.
  // arr 안에 pivot보다 작은 수들의 배열을 만들고 pivot의 왼쪽에 배치한다.
  // arr 안에 pivot보다 큰 수들의 배열을 pivot의 오른쪽에 배치
  // 위 작업을 재귀적으로 호출해서 마지막 리턴을 왼쪽 pivot 오른쪽 순으로 합쳐준다.

  let pivot = arr[0];
  let left = [];
  let right = [];
  
  if(arr.length < 2) return arr;

  for(let i=1; i<arr.length; i++){
    if(arr[i] <= pivot) left.push(arr[i]);
    else right.push(arr[i]);
  }
  
  const leftSorted = quickSort(left);
  const rightSorted = quickSort(right);

  return [...leftSorted, pivot, ...rightSorted];
};
profile
ZEP에서 프론트엔드 개발을 하고 있습니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN