์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/์•Œ๊ณ ๋ฆฌ์ฆ˜

JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

์šฉ๋‡ฝ 2023. 10. 12. 17:35
๋ฐ˜์‘ํ˜•

JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

์†Œ๊ฐœ

๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

 

๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ, ๊ฐ ์›์†Œ๋ฅผ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ณ ๊ธ‰ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ํฐ ๋ฐฐ์—ด์ด๋‚˜ ์‹œ๊ฐ„์ œํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ฝ”๋“œ

// ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•
function insertionSort(array) {
  for (let i = 1; i < array.length; i++) {
    let current = array[i];
    let j = i - 1;
    while (j >= 0 && array[j] > current) {
      array[j + 1] = array[j];
      j--;
    }
    array[j + 1] = current;
  }
  return array;
}

// ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•
function insertionSort(arr) {
  for (let i = 1; i < arr.length; i++) {
    for (let j = i; j > 0; j--) {
      // ์ธ๋ฑ์Šค j๋ถ€ํ„ฐ 1๊นŒ์ง€ 1์”ฉ ๊ฐ์†Œํ•˜๋ฉฐ ๋ฐ˜๋ณต
      if (arr[j] < arr[j - 1]) {
        // ํ•œ ์นธ์”ฉ ์™ผ์ชฝ์œผ๋กœ ์ด๋™
        // swap
        [arr[j], arr[j - 1]] = [arr[j - 1], arr[j]];
      } else {
        // ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ทธ ์œ„์น˜์—์„œ ๋ฉˆ์ถค
        break;
      }
    }
  }
}
  1. ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ธ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„์—์„œ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐฐ์—ด ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ 2 ~ 3 ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

์‚ฝ์ž… ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ๋น ๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์— ๋Œ€ํ•ด์„œ๋Š” ์ตœ์„ ์˜ ๊ฒฝ์šฐ O(N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•