๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section07 - 4 - ์‚ฝ์ž…์ •๋ ฌ

by YWTechIT 2021. 9. 9.
728x90

๐Ÿ“ 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๋ฅผ ๋„ฃ๋Š”๋‹ค.

 

 

728x90

 

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;
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€