์ค๋์ ํฉ๋ณ ์ ๋ ฌ(mergeSort)์ ๋ํ ๊ฐ์๋ฅผ ๋ค์์ต๋๋ค.
function merge(arr1, arr2) {
let i = 0;
let j = 0;
let result = [];
while (i < arr1.length && j < arr2.length) {
if(arr1[i] < arr2[j]){
//๋น๊ตํด์
//arr1[i]์ ๊ฐ์ด ์์ผ๋ฉด ๋ฐฐ์ด์ ๋ฃ๊ณ
//i ์ฆ๊ฐํ๊ธฐ j๋ ๊ทธ๋๋ก
result.push(arr1[i]);
i++;
}else if(arr2[j] <= arr1[i]){
result.push(arr2[j]);
//arr2[j]์ ๊ฐ์ด ์์ผ๋ฉด ๋ฐฐ์ด์ ๋ฃ๊ณ
//j ์ฆ๊ฐํ๊ธฐ j๋ ๊ทธ๋๋ก
j++;
}
}
if(i < arr1.length) {
result = result.concat(arr1.slice(i));
}else if (j < arr2.length){
result = result.concat(arr2.slice(j))
}
return result;
}
function mergeSort(arr) {
if(arr.length <= 1){
return arr;
}
let len1 = Math.floor(arr.length / 2);
let left = mergeSort(arr.slice(0, len1))
let right = mergeSort(arr.slice(len1))
return merge(left, right)
}
console.log(mergeSort([1,2,5,22,9,32,110]))
์ด์ ์ ์ฌ๊ท๋ฅผ ๋ฐฐ์ ๋ ๊ฒ์ ํ์ฉํ์ฌ ๊ตฌํํด ๋ณด๋ ์๊ฐ์ด์์ต๋๋ค.
์ฌ๊ท๋ฅผ ๋ฐฐ์ฐ๊ธด ํ์ง๋ง ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํด๋ด๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
๊ทธ๋๋ ์ด ์๊ณ ๋ฆฌ์ฆ์ด ๊ตฌํ์ด ์ดํด๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋คํํ์ด๋ผ๊ณ ์๊ฐ์ด ๋ญ๋๋ค.
ํด..๐