Algorithm/기본문제

고급 정렬(2) - 퀵 정렬(quick sort)

atsc 2021. 3. 13. 14:11
  • 기준점(pivot)을 정해서 기준점보다 작은 데이터는 기준점 좌측에, 큰 데이터는 우측에 배치하는 함수를 작성
  • 각 왼쪽, 오른쪽은 재귀용법을 사용하여 다시 동일 함수를 호출하여 위의 작업을 반복함
  • 함수는 (왼쪽 + 기준점 + 오른쪽) 배열을 리턴함

 

function quickSort(data) {
  if (data.length <= 1) {
    return data;
  }
  const left = [];
  const right = [];
  const pivot = data[0];

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

  return quickSort(left).concat([pivot].concat(quickSort(right)));
}