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)