728x90
๋ฐ์ํ
๐ ๋ฌธ์
N๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ๋๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ์ฝ์ ์ ๋ ฌ์ด๋ค.
๐ง ์ฝ์ ์ ๋ ฌ(insertion sort)์ด๋ ๋ฌด์์ผ๊นโ
- ์ ์์ ์นด๋๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํ๋ค.
- ์๋ก์ด ์นด๋๋ฅผ ๊ธฐ์กด์ ์ ๋ ฌ๋ ์นด๋ ์ฌ์ด์ ์ฌ๋ฐ๋ฅธ ์๋ฆฌ๋ฅผ ์ฐพ์ ์ฝ์ ํ๋ค.
- ์๋ก ์ฝ์ ๋ ์นด๋์ ์๋งํผ ๋ฐ๋ณตํ๊ฒ ๋๋ฉด ์ ์ฒด ์นด๋๊ฐ ์ ๋ ฌ๋๋ค.
- ์๋ฃ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด ๋ถ๋ถ๊ณผ ๋น๊ตํ์ฌ, ์์ ์ ์์น๋ฅผ ์ฐพ์ ์ฝ์ ํจ์ผ๋ก์จ ์ ๋ ฌ์ ์์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋งค ์์๋ง๋ค ํด๋น ์์๋ฅผ ์ฝ์ ํ ์ ์๋ ์์น๋ฅผ ์ฐพ์ ํด๋น ์์น์ ๋ฃ๋๋ค.
๐ ํ์ด
๐ง๐ป๐ป ๋์ ํ์ด ๋ฐฉ๋ฒ
function solution(arr) {
const answer = [];
for (let i = 0; i < arr.length; i++) {
// for ๋ฌธ์ ๋๋ฉด์ ๋ฐฐ์ด์ ์์๋ฅผ ํ๋์ฉ ์ถ๊ฐํ๋ค.
answer.push(arr[i]);
let j = i;
// while ๋ฌธ์ ๋๋ฉด์ j๊ฐ j - 1๋ณด๋ค ์๋ค๋ฉด ๊ต์ฒดํ๊ณ j--๋ฅผ ํ๋ค.
// j๊ฐ j - 1๋ณด๋ค ํฌ๋ค๋ฉด ์์ ์ ์์น๋ฅผ ์ฐพ์ ๊ฒ์ด๋ฏ๋ก while ๋ฌธ์ ๋ฒ์ด๋๋ค.
while (j > 0 && answer[j] < answer[j - 1]) {
[answer[j], answer[j - 1]] = [answer[j - 1], answer[j]];
j--;
}
}
return answer;
}
let arr = [11, 7, 5, 6, 10, 9];
console.log(solution(arr));
๐จ๐ผ๐ซ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
function solution(arr) {
let answer = arr;
for (let i = 1; i < arr.length; i++) {
// ๋ฐฐ์ด์ด ๋ค๋ก ๋ฐ๋ฆฌ๋ฉด ๊ฐ์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ temp ๋ณ์์ ์ ์ฅ
let tmp = arr[i];
let j;
// ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด ๋ถ๋ถ๊ณผ ๋น๊ตํ์ฌ arr[j]๊ฐ temp๋ณด๋ค ํฌ๋ฉด ํ ์นธ์ฉ ๋ค๋ก ์ด๋
for (j = i - 1; j >= 0; j--) {
if (arr[j] > temp) arr[j + 1] = arr[j];
else break;
}
// arr[j]๊ฐ temp๋ณด๋ค ์์ break ๋ฌธ์ ๋ง๋๊ฑฐ๋ for ๋ฌธ์ด ๊ทธ๋๋ก ๋๋๋ ๊ฒฝ์ฐ
// temp๊ฐ ์์ ์ ์์น๋ฅผ ์ฐพ์ ๊ฒ์ด๋ฏ๋ก arr[j + 1]์ temp๋ฅผ ์ ์ฅ
arr[j + 1] = temp;
}
return answer;
}
let arr = [11, 7, 5, 6, 10, 9];
console.log(solution(arr));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 7] 06 - ์ฅ๋๊พธ๋ฌ๊ธฐ ํ์ (0) | 2022.10.06 |
---|---|
[JavaScript/section 7] 05 - LRU (0) | 2022.10.05 |
[JavaScript/section 7] 03 - Special Sort(๊ตฌ๊ธ ์ธํฐ๋ทฐ) (0) | 2022.10.02 |
[JavaScript/section 7] 02 - ๋ฒ๋ธ ์ ๋ ฌ (0) | 2022.09.30 |
[JavaScript/section 7] 01 - ์ ํ ์ ๋ ฌ (0) | 2022.09.29 |