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

JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ์„ ํƒ ์ •๋ ฌ(Selection Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

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

์†Œ๊ฐœ

์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ ๋งจ ์•ž์— ์œ„์น˜์‹œํ‚ค๊ณ , ๊ทธ๋‹ค์Œ์œผ๋กœ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„ ๋‘ ๋ฒˆ์งธ ์œ„์น˜์— ์œ„์น˜์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๋ณด๋‚ด์ง„ ์›์†Œ๋Š” ๋” ์ด์ƒ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ฐœ๋…

์„ ํƒ ์ •๋ ฌ์€ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ฝ”๋“œ ๊ตฌํ˜„์ด ์‰ฌ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์ง€๋งŒ, ๊ทธ๋งŒํผ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋†’์•„ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ๋Š” ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ ํƒ ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์œผ๋กœ, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋”์šฑ ์‹ฌํ•ด์ง‘๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ฝ”๋“œ

function selectionSort(arr) {
  const n = arr.length;

  for (let i = 0; i < n - 1; i++) {
    let minIndex = i;
    for (let j = i + 1; j < n; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    if (minIndex !== i) {
      [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
    }
  }

  return arr;
}

// Example usage
const unsortedArr = [3, 1, 6, 2, 9, 0];
const sortedArr = selectionSort(unsortedArr);
console.log(sortedArr); // [0, 1, 2, 3, 6, 9]
  1. ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ณ€์ˆ˜ n์— ์ €์žฅํ•œ ๋’ค, ๋ฐ”๊นฅ์ชฝ for loop์—์„œ i๋ฅผ 0๋ถ€ํ„ฐ n-2๊นŒ์ง€ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  2. ํ˜„์žฌ ์ธ๋ฑ์Šค i๋ถ€ํ„ฐ ๋๊นŒ์ง€์˜ ๊ฐ’ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„ i๋ฒˆ์งธ ์œ„์น˜์— ๋†“์Šต๋‹ˆ๋‹ค.
  3. ์ด ๊ณผ์ •์„ n-1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ชจ๋“  ๊ฐ’์ด ์ •๋ ฌ๋˜์–ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•