function quickSort(arr){
if(arr.length <= 1){
return arr;
}
const pivot = arr[0];
const left = [];
const right = [];
for(let i=1; i<arr.length; i++){
arr[i]<pivot ? left.push(arr[i]) : right.push(arr[i])
}
return quickSort(left).concat(pivot, quickSort(right));
}
const array = [1, 3, 2, 7, 5, 6, 4, 8, 9, 10];
console.log(array);
console.log(quickSort(array));
음.. quickSort()란 밑에 링크에 달아놨습니다.
코드는 음 이번에 전에 mergeSort() 합병정렬때는 중간에 if문을 사용했는데
지금은 삼항연산자를 써봤어요 ㅎㅎㅎㅎㅎㅎ
마찬가지로 재귀함수로
return 까지 루프를 돌려주고
pivot 변수로 기준점을 정해주고, 문제에서는 0번째라서 0으로 했습니다.
left와 right를 빈 배열로 선언해주고,
for문으로 돌려주시면 됩니다.
마지막으로 핵심 point
return quickSort(left)에 concat()을 했는데요
concat을 안하고 그냥 right 해버리면 그냥 12345678910이 되어버려요
그래서 concat은 배열로 붙여주는 함수로 쓰인다더군요
concat으로 붙여주니 배열로
출력 값:
(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: 7
7: 8
8: 9
9: 10
이 나왔습니다.
참고사이트
https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html