Quick sort

이영광·2021년 8월 16일
0

알고리즘

목록 보기
8/16
const quickSort = function (arr) {
  if(arr.length <=1) return arr

  let left = []
  let right = []
  let pivot = arr[0]

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

   const sortLeft = quickSort(left)
   const sortright = quickSort(right)

   return [...sortLeft,pivot,...sortright]
};
console.log(quickSort([5,4,3,2,1,]))

말그대로 빨리 정렬할수 있는 알고리즘

기준값을 정해주고 기준값보다 작은수는 왼쪽 큰수는 오른쪽에 올려놓고

왼쪽부터 재귀적으로 리턴값이 1이하로 떨어질대까지 재귀호출한다

left 4 3 2 1 pivot 5

left 3 2 1 pivot 4

left 2 1 pivot 3

left 1 pivot 2

[1,2] 로리턴 후 콜스택실행 [1,2]에 pivot 3 이들어가고 그다음 4 5 가 들어가면서 1,2,3,4,5 리턴

arr: (8) [2, 10, 1, 0, 5, 7, 3, 6]

재귀적으로 실행시

left 1,0 pivot 2 right 10,5,7,3,6

left 0 ,1 로 리턴된후 [01, 2 ,undefined]로 리턴된다

right

left 5 7 3 6 //10

     3 // 5 //67
     
     right 6 //7 로 리턴
     
    리턴 3567//피봇 10 리턴
    
    
    [01,2,3567,10]
    합치면  [0,1,2,3,5,6,7 10]![](https://velog.velcdn.com/images%2Fhi4190%2Fpost%2Ff540a16f-251b-4446-a60d-12ed05df3822%2Fimg.jpg)
    
   
    
    
profile
《REACT》《JAVASCRIPT 》 만지고있어욤

0개의 댓글