[2022-12-29 โœ๐Ÿผ TIL ]

Burkeyยท2022๋…„ 12์›” 29์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
31/157

์˜ค๋Š˜์€ ํ•ฉ๋ณ‘ ์ •๋ ฌ(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]))

์ด์ „์— ์žฌ๊ท€๋ฅผ ๋ฐฐ์› ๋˜ ๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด ๋ณด๋Š” ์‹œ๊ฐ„์ด์˜€์Šต๋‹ˆ๋‹ค.
์žฌ๊ท€๋ฅผ ๋ฐฐ์šฐ๊ธด ํ–ˆ์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•ด๋‚ด๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ตฌํ˜„์ด ์ดํ•ด๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹คํ–‰ํžˆ์ด๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.
ํœด..๐Ÿ˜Œ

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€