Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable

Amenable's Blog

์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)
๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ/์ •๋ ฌ

์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)

2023. 3. 6. 21:22

1. ์ •์˜ ๐Ÿงต

์‚ฝ์ž… ์ •๋ ฌ

  ์‚ฝ์ž… ์ •๋ ฌ์€ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ ์ •๋ ฌ์„ ์™„์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
  ์นด๋“œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. '4, 2, 3, 1, 5'๋ผ๋Š” ์ˆซ์ž ์ ํžŒ 5์žฅ์˜ ์นด๋“œ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์นด๋“œ๋ฅผ ๋ฝ‘์œผ๋ฉด์„œ ์†์— ์ฅ”๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž. ๋ฝ‘ํžŒ ์นด๋“œ๋Š” ์ด๋ฏธ ์†์— ์ฅ์–ด์ง„ ์นด๋“œ๋“ค ์‚ฌ์ด์— ์œ„์น˜๋ฅผ ์ฐพ์•„๋“ค์–ด๊ฐ„๋‹ค.

์ด๋ฏธ ์†์— ์ฅ์–ด์ ธ ์žˆ๋Š” ์นด๋“œ๋“ค ๋ฝ‘์€ ์นด๋“œ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๋“ค์–ด๊ฐ„ ๋ชจ์Šต
  4 4
4 2 2  4
2  4 3 2  3  4
2  3  4 1 1  2  3  4
1  2  3  4 5 1  2  3  4  5

  1๋ฒˆ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์นด๋“œ๊ฐ€ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž. 1๋ฒˆ ์นด๋“œ๋Š” 4๋ฒˆ๊ณผ ๋น„๊ตํ•˜๊ณ , 3๋ฒˆ๊ณผ ๋น„๊ตํ•˜๊ณ , 2๋ฒˆ๊ณผ ๋น„๊ตํ•˜์—ฌ ์ž์‹ ์˜ ์œ„์น˜์— ๋„๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 1๋ฒˆ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ๊ฐ’์„ ๊ฐ€์ง„ ์นด๋“œ๋“ค์€ ํ•œ ์นธ์”ฉ ๋’ค๋กœ ๋ฐ€๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋จธ์ง€ ์นด๋“œ๋“ค๋„ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

2. ๋™์ž‘ ๋ฐฉ์‹ ๐Ÿงถ

  ์œ„์˜ ์นด๋“œ ์˜ˆ์‹œ๋ฅผ ์ž˜ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ๋™์ž‘ ๋ฐฉ์‹์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค.

  1. ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๊ฐ€์•ผ ํ•˜๋Š” i๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  2. (i - 1) ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ i๋ฒˆ์งธ ์›์†Œ์™€ ๋น„๊ต๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.
  3. i๋ฒˆ์งธ ์›์†Œ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ์˜ ์ž๋ฆฌ์—์„œ ํ•œ ์ž๋ฆฌ์”ฉ ๋’ค๋กœ ๋ฐ€๋ฆฌ๊ฒŒ ๋œ๋‹ค.
  4. ๋น„๊ต๋˜๋Š” ์›์†Œ๊ฐ€ i๋ฒˆ์งธ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์— ๋น„๊ต๋ฅผ ๋ฉˆ์ถ˜๋‹ค.
  5. ๋ฐ€๋ฆฌ์ง€ ์•Š์€ ์›์†Œ๋“ค๊ณผ ๋ฐ€๋ฆฐ ์›์†Œ๋“ค์˜ ์‚ฌ์ด์— i๋ฒˆ์งธ ์›์†Œ๊ฐ€ ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.

 

3. ๊ตฌํ˜„(JAVA) ๐Ÿงฃ

void insertionSort(int[] arr) {
    for(int idx = 1; idx < arr.length; idx++) {
        int temp = arr[idx];
        int compareIdx = idx - 1;

        while((compareIdx >= 0) && (temp < arr[compareIdx])) {

            arr[compareIdx + 1] = arr[compareIdx];
            compareIdx--;
        }

        // ๋ฐ€๋ฆฌ์ง€ ์•Š์€ ์›์†Œ๋“ค๊ณผ ๋ฐ€๋ฆฐ ์›์†Œ๋“ค ์‚ฌ์ด์— ํ•ด๋‹น ์›์†Œ๊ฐ€ ์œ„์น˜ํ•œ๋‹ค.
        arr[compareIdx + 1] = temp;
    }
}

 

4. ์‹œ๊ฐ„๋ณต์žก๋„ & ๊ณต๊ฐ„๋ณต์žก๋„ ๐Ÿ“

1. ์‹œ๊ฐ„๋ณต์žก๋„

  ์—ญ์œผ๋กœ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ตœ์•…์˜ ๊ฒฝ์šฐ) i๋ฒˆ์งธ ์›์†Œ๋งˆ๋‹ค (i - 1) ๋ฒˆ ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ์›์†Œ๊ฐ€ N๊ฐœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

1 + 2 + ... + (N - 2) + (N - 1) = N * (N - 1) / 2

  ๋”ฐ๋ผ์„œ, ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N ^ 2)์ด๋‹ค.

  ๋งŒ์•ฝ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ตœ์„ ์˜ ๊ฒฝ์šฐ)์—๋Š” i๋ฒˆ์งธ ์›์†Œ๋งˆ๋‹ค 1๋ฒˆ๋งŒ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋˜๋ฏ€๋กœ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

  ์ตœ์„ (BEST) ํ‰๊ท (AVERAGE) ์ตœ์•…(WORST)
์‹œ๊ฐ„๋ณต์žก๋„ O(N) O(N^2) O(N^2)

2. ๊ณต๊ฐ„๋ณต์žก๋„

๊ณต๊ฐ„๋ณต์žก๋„์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ํ•ด๋‹น ๋ฐฐ์—ด์—์„œ ๊ตํ™˜์ด ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ O(N)์ด๋‹ค.

 

5. ์žฅ์  & ๋‹จ์  ๐Ÿ’ก

1. ์žฅ์ 

  • ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ๋‹จ์ˆœํ•˜๋‹ค.
  • ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ํšจ๊ณผ์ ์ด๋‹ค. - O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„
  • ์•ž์—์„œ ์‚ดํŽด๋ณธ ๋ฒ„๋ธ” ์ •๋ ฌ๊ณผ ์„ ํƒ ์ •๋ ฌ์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๋‹ค.

2. ๋‹จ์ 

  • ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N^2)์ด๋ฏ€๋กœ ์ƒ๋‹นํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค.
  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ธด ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

ํ•ด๋‹น ๊ธ€์€ Gyoogle๋‹˜์˜ ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

'๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ > ์ •๋ ฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํž™ ์ •๋ ฌ (Heap Sort)  (0) 2023.03.12
์œ„์ƒ ์ •๋ ฌ(Topology Sort)  (2) 2023.03.07
๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)  (0) 2023.03.07
์„ ํƒ ์ •๋ ฌ(Selection Sort)  (2) 2023.03.04
๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort)  (0) 2023.03.04
    '๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ/์ •๋ ฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์œ„์ƒ ์ •๋ ฌ(Topology Sort)
    • ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)
    • ์„ ํƒ ์ •๋ ฌ(Selection Sort)
    • ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort)
    Amenable
    Amenable
    CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”