์ฝ๋ฉ ํ
์คํธ/์๊ณ ๋ฆฌ์ฆ
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]
- ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ณ์ n์ ์ ์ฅํ ๋ค, ๋ฐ๊นฅ์ชฝ for loop์์ i๋ฅผ 0๋ถํฐ n-2๊น์ง ์ฆ๊ฐ์ํต๋๋ค.
- ํ์ฌ ์ธ๋ฑ์ค i๋ถํฐ ๋๊น์ง์ ๊ฐ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์ i๋ฒ์งธ ์์น์ ๋์ต๋๋ค.
- ์ด ๊ณผ์ ์ n-1๋ฒ ๋ฐ๋ณตํ๋ฉด ๋ชจ๋ ๊ฐ์ด ์ ๋ ฌ๋์ด ๋์ด๋ฉ๋๋ค.
๋ฐ์ํ