2018~2019/알고리즘

자바스크립트로 퀵 정렬 구현하기

전기도둑 2018. 12. 31. 01:17

1. pivot값이 처음 값인 경우


let arr = [1,4,5,2,3,6];


function Quick(arr) {

  

  const len = arr.length;

  

  if(len == 0)

    return [];

  

  let left = [];

  let right = [];

  const pivot = arr[0];

  

  for(let i=1; i<len; i++) {

    if(arr[i] < pivot)

      left.push(arr[i]);

    else

      right.push(arr[i]);

  }


  return Quick(left).concat(pivot, Quick(right));

}


console.log(Quick(arr));


2. pivot값이 중간 값인 경우


let arr = [1,4,5,2,3,6];


function Quick(arr) {

  

  const len = arr.length;

  

  if(len == 0)

    return [];

  

  let left = [];

  let right = [];

  const tmp = arr[0];

  arr[0] = arr[parseInt(len/2)];

  arr[parseInt(len/2)] = tmp;

  

  const pivot = arr[0];

  

  for(let i=1; i<len; i++) {

    if(arr[i] < pivot)

      left.push(arr[i]);

    else

      right.push(arr[i]);

  }


  return Quick(left).concat(pivot, Quick(right));

}


console.log(Quick(arr));