๐ section07 - 4 - ์ฝ์ ์ ๋ ฌ
์ฝ์ ์ ๋ ฌ์ ์ ํ์ ๋ ฌ๊ณผ ๋น์ทํ์ง๋ง ์กฐ๊ธ์ ๋ค๋ฅธ ๋ฐฉ์์ด๋ค. ์ฝ์ ์ ๋ ฌ์ ๊ฐ๋ตํ ์๊ฐ๋ ์ฝ์ ์ ๋ ฌ 5๋ถ ๋ง์ ์ดํดํ๊ธฐ - Gunny์ ์์์ ํ์ธํ์.
์ฝ์
์ ๋ ฌ์ ์ ํ ์ ๋ ฌ๋ณด๋ค ์๊ฐ ๋ณต์ก๋๋ฉด์์ ํจ๊ณผ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ธ๋ฐ ๋ง์ฝ, ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด์๋ค๊ณ ๊ฐ์ ํ๋ฉด while
๋ฌธ์ ๊ฑฐ์ ์ํํ์ง ์์ผ๋ฏ๋ก O(N)
์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ณด์ฌ์ค๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ญ ์ ๋ ฌ(๋ฐ๋๋ก ์ ๋ ฌ)๋์ด์๋ค๋ฉด index
๋๊น์ง while
๋ฌธ์ ์ํํ๋ฏ๋ก ์ต์
์ ๊ฒฝ์ฐ์ธ O(N^2)
์ ๋ํ๋ธ๋ค.
1. i
๊ฐ 1๋ถํฐ ์์ํ์ฌ n
๊น์ง ํ์ํ๋ค. (left
์ธ๋ฑ์ค ์ฌ์ฉ์ผ๋ก ์ธํด 0๋ถํฐ ์์์ ํ์ง ์์)
2. temp
์ arr[i]
๋ฅผ ์ ์ธํ๋ค. (๋์ค์ ๋ฎ์ด ์์ด ๊ฐ ๋งจ ์์ ๋ฃ์ ์์ )
3. left
๊ฐ 0๋ณด๋ค ํฌ๊ฑฐ๋ && ๋๋ณด๋ค ์ข์ธก์ ์์ ๊ฐ์ด ์์ ๋๋ง ์ฐ์ธก ๊ฐ์ ํ์ฌ ๊ฐ์ ๋ฎ์ด ์์ด๋ค.
4. while
๋ฌธ์ด ๊ฑฐ์ง์ด ๋๋ฉด ์ ์ผ ๋ง์ง๋ง์ผ๋ก ์์ง์ธ left+1
๊ฐ์ temp
๋ฅผ ๋ฃ๋๋ค.
let n = 6;
let arr = [11, 7, 5, 6, 10, 9];
console.log(solution(n, arr));
// ๋์ ์ฝ๋
function solution(n, arr) {
for (let i = 1; i < n; i++) {
let cur = arr[i];
let left = i - 1;
while (left >= 0 && arr[left] > cur) {
arr[left + 1] = arr[left];
left--;
}
arr[left + 1] = cur;
}
return arr;
}
// ๊ฐ์ ์ฝ๋
function solution(n, arr) {
for (let i=0; i<n; i++){
let tmp = arr[i]
let j;
for (j=i-1; j>=0; j--){
if (arr[j] > tmp) arr[j+1] = arr[j];
else break;
}
arr[j+1] = tmp;
}
return arr;
}
๋๊ธ