퀵정렬
너무 어려워서 포기함 ㅋ
다시 생각해봐야되겟다
이런식으로 서로 비교 하면서 스택에 쌓은다음-> 하나로 합친다음-> 다시 비교! 해서
결국은 ! 배열 하나를 만드는 것이다!!!
선생님이 일반적인 방법으로 숫자를 구하는 식을 알려줬지만 나만의 방식으로 하고 싶어서
하다 보니까 진도가 좀 밀리게 됬다.!!!
결국 -> 숫자-> 문자-> split 으로 나눔-> 다시 숫자 -> 배열로 만든다음
->splice 함수를 사용하여 배열 앞의 수를 다 지우고 나올수 있는 부분만 나오게
만듬!
var bucket = Array.from({ length: 10 }, () => []
);
배열을 만들어서 반환한다. 이때 길이는 10 으로 하고 안에는 비어 있게 만듬!
arr = [].concat(...bucket);
새로운 배열을 만들어서 bucket 안에 있는 것과 합치기 <<
하나씩 빼는게 아니라 하나로 합친다는것이 중요하다.!
const check_arr = function (arr, index) {
var num = arr.toString().split('');
// console.log(num)
const at = num.map(v => {
return parseInt(v)
})
var max = at.length - index;
if (max < 0) {
return 0;
}
//console.log(max)
else if (max >= 0) {
at.splice(0, max);
return (at[0]);
}
}
const max_len = function (arr) {
var max = 0;
for (var i = 0; i < arr.length; i++) {
max = Math.max(arr[i], max);
}
return max.toString().length
}
const arr_list = function (arr) {
var max = max_len(arr);
//console.log(max)
var num = [];
for (var i = 0; i < max; i++) {
var bucket = Array.from({ length: 10 }, () => []
);
// console.log(arr[i])
for (var zz = 0; zz < arr.length; zz++) {
var num = check_arr(arr[zz], i + 1)
if (num >= 0) {
// console.log(num)
bucket[num].push(arr[zz]);
}
//console.log(`${arr[zz]} 의 ${i + 1} 의 ${num}`);
}
console.log(bucket)
arr = [].concat(...bucket);
console.log(arr)
}
}
arr_list([23, 345, 5467, 12, 2345, 9852])