๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Knowledge/Algorithm

[Algorithm]์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ์ดํ•ด์™€ ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„

by YJ Dev 2024. 7. 18.
728x90
๋ฐ˜์‘ํ˜•
SMALL

์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ์™œ ์šฐ๋ฆฌ๋Š” ์‚ฝ์ž… ์ •๋ ฌ์„ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ์š”? ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๊นŒ์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฝ์ž… ์ •๋ ฌ๊ณผ ์„ ํƒ ์ •๋ ฌ์˜ ์ฐจ์ด์ ๋„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ ํƒ ์ •๋ ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”๐Ÿ˜

""

[Algorithm]์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ํŒŒ์ด์ฌ ์„ ํƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

ํŒŒ์ด์ฌ ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ์ž๋“ค์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •์˜, ๋™์ž‘ ์›๋ฆฌ, ํŒŒ์ด์ฌ ์ฝ”

creativevista.tistory.com

์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒŒ์ด์ฌ


01. ์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๐Ÿค”

์‚ฝ์ž… ์ •๋ ฌ์˜ ์ •์˜

์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)์€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜์—ฌ ์ •๋ ฌ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‚ฝ์ž… ์ •๋ ฌ์˜ ์ž‘๋™ ์›๋ฆฌ

์ดˆ๊ธฐ ์ƒํƒœ:

  • ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ๋๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ์š”์†Œ๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ ฌ ๊ณผ์ •:

  • ํ˜„์žฌ ์š”์†Œ๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ๋์—์„œ๋ถ€ํ„ฐ ๋น„๊ตํ•˜์—ฌ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์œผ๋ฉด, ํ•ด๋‹น ์œ„์น˜์— ํ˜„์žฌ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.

๋ฐ˜๋ณต:

  • ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ •๋ ฌ๋  ๋•Œ๊นŒ์ง€ ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์‚ฝ์ž… ์ •๋ ฌ์˜ ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๋ ฌํ•  ๋ฐฐ์—ด์ด [5, 2, 9, 1, 5, 6]์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ์ƒํƒœ: [5, 2, 9, 1, 5, 6]

  • ์ฒซ ๋ฒˆ์งธ ์š”์†Œ 5๋Š” ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

2 ์‚ฝ์ž…:

  • ๋‘ ๋ฒˆ์งธ ์š”์†Œ 2๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„(์ฒซ ๋ฒˆ์งธ ์š”์†Œ 5)๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • 2๋Š” 5๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ 5 ์•ž์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: [2, 5, 9, 1, 5, 6]

9 ์‚ฝ์ž…:

  • ์„ธ ๋ฒˆ์งธ ์š”์†Œ 9๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„(2, 5)๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • 9๋Š” 5๋ณด๋‹ค ํฌ๋ฏ€๋กœ ์ œ์ž๋ฆฌ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: [2, 5, 9, 1, 5, 6]

1 ์‚ฝ์ž…:

  • ๋„ค ๋ฒˆ์งธ ์š”์†Œ 1์„ ์ •๋ ฌ๋œ ๋ถ€๋ถ„(2, 5, 9)๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • 1์€ 2๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ 2 ์•ž์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: [1, 2, 5, 9, 5, 6]

5 ์‚ฝ์ž…:

  • ๋‹ค์„ฏ ๋ฒˆ์งธ ์š”์†Œ 5๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„(1, 2, 5, 9)๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • 5๋Š” 9๋ณด๋‹ค ์ž‘๊ณ  5๋ณด๋‹ค ํฌ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‘ ๋ฒˆ์งธ 5์˜ ์•ž์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: [1, 2, 5, 5, 9, 6]

6 ์‚ฝ์ž…:

  • ์—ฌ์„ฏ ๋ฒˆ์งธ ์š”์†Œ 6์„ ์ •๋ ฌ๋œ ๋ถ€๋ถ„(1, 2, 5, 5, 9)๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • 6์€ 9๋ณด๋‹ค ์ž‘๊ณ  5๋ณด๋‹ค ํฌ๋ฏ€๋กœ 9 ์•ž์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: [1, 2, 5, 5, 6, 9]

์ด ๊ณผ์ •์„ ํ†ตํ•ด ๋ฐฐ์—ด์ด ์™„์ „ํžˆ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

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

  • ์ตœ์„ ์˜ ๊ฒฝ์šฐ: O(n)
  • ํ‰๊ท ์˜ ๊ฒฝ์šฐ: O(n²)
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ: O(n²)

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

  • O(1): ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

02. ์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋‹จ๊ณ„๋ณ„ ์„ค๋ช…๐Ÿ› ๏ธ

์ดˆ๊ธฐ ์ƒํƒœ ์„ค๋ช…

์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ: [12, 11, 13, 5, 6]

๊ฐ ๋‹จ๊ณ„๋ณ„ ์š”์†Œ ์‚ฝ์ž… ๊ณผ์ • ์„ค๋ช…

  1. ๋‘ ๋ฒˆ์งธ ์š”์†Œ 11์„ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ 12์™€ ๋น„๊ตํ•˜์—ฌ 12 ์•ž์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. [11, 12, 13, 5, 6]
  2. ์„ธ ๋ฒˆ์งธ ์š”์†Œ 13์€ ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. [11, 12, 13, 5, 6]
  3. ๋„ค ๋ฒˆ์งธ ์š”์†Œ 5๋ฅผ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ 11๊ณผ ๋น„๊ตํ•˜์—ฌ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. [5, 11, 12, 13, 6]
  4. ๋งˆ์ง€๋ง‰ ์š”์†Œ 6์„ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. [5, 6, 11, 12, 13]

์™„๋ฃŒ ์ƒํƒœ ์„ค๋ช…

๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์ตœ์ข…์ ์œผ๋กœ [5, 6, 11, 12, 13]์ด ๋ฉ๋‹ˆ๋‹ค.


03. ํŒŒ์ด์ฌ์œผ๋กœ ์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„๐Ÿ’ป

def insertion_sort(arr):  # ๋ฐฐ์—ด์„ ์ธ์ˆ˜๋กœ ๋ฐ›์•„ ์‚ฝ์ž… ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ ์ •์˜
    for i in range(1, len(arr)):  # ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊นŒ์ง€ ๋ฐ˜๋ณต
        key = arr[i]  # ํ˜„์žฌ ์‚ฝ์ž…ํ•  ์š”์†Œ๋ฅผ key์— ์ €์žฅ
        j = i - 1  # key์˜ ์ด์ „ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ธ๋ฑ์Šค j๋ฅผ ์„ค์ •
        # key๊ฐ€ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์—์„œ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋น„๊ตํ•˜๊ณ  ์ด๋™
        while j >= 0 and key < arr[j]:  # key๋ณด๋‹ค ํฐ ์š”์†Œ๋“ค์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
            arr[j + 1] = arr[j]  # ์š”์†Œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
            j -= 1  # ์ธ๋ฑ์Šค๋ฅผ ํ•œ ์นธ ์™ผ์ชฝ์œผ๋กœ ์ด๋™
        # ์ ์ ˆํ•œ ์œ„์น˜์— key ์‚ฝ์ž…
        arr[j + 1] = key  # key๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์‚ฝ์ž…

# ์‚ฌ์šฉ ์˜ˆ์ œ
arr = [5, 2, 9, 1, 5, 6]  # ์ •๋ ฌํ•  ๋ฐฐ์—ด ์ •์˜
insertion_sort(arr)  # ์‚ฝ์ž… ์ •๋ ฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ
print(arr)  # ์ •๋ ฌ๋œ ๋ฐฐ์—ด ์ถœ๋ ฅ: [1, 2, 5, 5, 6, 9]

๊ตฌํ˜„ ์ฝ”๋“œ ์„ค๋ช…

  1. for ๋ฃจํ”„๋Š” ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  2. while ๋ฃจํ”„๋Š” ํ˜„์žฌ ์š”์†Œ๋ฅผ ์•ž์˜ ์š”์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  3. ์ ์ ˆํ•œ ์œ„์น˜์— ๋„๋‹ฌํ•˜๋ฉด ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

04. ์‚ฝ์ž… ์ •๋ ฌ์˜ ์žฅ๋‹จ์ ๐Ÿ“Š

์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)์€ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ํšจ์œจ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•˜๋ฉด ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•œ์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  1. ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„:
    ์‚ฝ์ž… ์ •๋ ฌ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ง๊ด€์ ์ด๋ฉฐ, ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จํ•ด์„œ ์ดํ•ดํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  2. ์ ์€ ๋ฐ์ดํ„ฐ ์ด๋™:
    ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์ตœ์†Œํ•œ์˜ ์ด๋™๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ:
    ์‚ฝ์ž… ์ •๋ ฌ์€ ์ œ์ž๋ฆฌ ์ •๋ ฌ(in-place sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. ์ž‘์€ ๋ฐฐ์—ด์—์„œ ํšจ์œจ์ :
    ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ์„ ๋•Œ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ 10๊ฐœ ์ดํ•˜์ผ ๋•Œ๋Š” ์‚ฝ์ž… ์ •๋ ฌ์ด ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  5. ๋ถ€๋ถ„์ ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—์„œ ํšจ์œจ์ :
    ์ด๋ฏธ ๋ถ€๋ถ„์ ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์„ ์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)์ž…๋‹ˆ๋‹ค.
  6. ์•ˆ์ •์„ฑ:
    ์‚ฝ์ž… ์ •๋ ฌ์€ ์•ˆ์ • ์ •๋ ฌ(stable sort)์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋™์ผํ•œ ํ‚ค๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๋“ค์˜ ์ƒ๋Œ€์ ์ธ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  1. ๋น„ํšจ์œจ์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„:
    ํ‰๊ท  ๋ฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n²)์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  2. ํฐ ๋ฐฐ์—ด์—์„œ ๋น„ํšจ์œจ์ :
    ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํฐ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ๋Š” ๋” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ ๋“ฑ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  3. ๋น„๊ต์™€ ์ด๋™์ด ๋งŽ์Œ:
    ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ๋น„๊ต์™€ ๋ฐ์ดํ„ฐ ์ด๋™์ด ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์‚ฝ์ž… ์ •๋ ฌ์€ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ๋Œ€๋ถ€๋ถ„ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋‚˜ ์ด๋ฏธ ๋ถ€๋ถ„์ ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” ์‚ฝ์ž… ์ •๋ ฌ์ด ๋งค์šฐ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


05. ์‚ฝ์ž… ์ •๋ ฌ๊ณผ ์„ ํƒ ์ •๋ ฌ์˜ ์ฐจ์ด์ ๐ŸŽญ

์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)๊ณผ ์„ ํƒ ์ •๋ ฌ(Selection Sort)์€ ๋‘˜ ๋‹ค ๋น„๊ต ๊ธฐ๋ฐ˜์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„๊ณผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹๊ณผ ํšจ์œจ์„ฑ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ž‘๋™ ์›๋ฆฌ:

  • ๋ฐฐ์—ด์„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ์š”์†Œ๋ฅผ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ๋งˆ๋‹ค ์ด์ „ ์š”์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

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

  • ์ตœ์„ ์˜ ๊ฒฝ์šฐ: O(n) (๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ)
  • ํ‰๊ท  ๋ฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ: O(n²) (๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)

๊ณต๊ฐ„ ๋ณต์žก๋„:

  • O(1) (์ œ์ž๋ฆฌ ์ •๋ ฌ, ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๊ฑฐ์˜ ์—†์Œ)

ํŠน์ง•:

  • ์•ˆ์ • ์ •๋ ฌ: ๋™์ผํ•œ ๊ฐ’์˜ ์š”์†Œ๋“ค์ด ์ •๋ ฌ ํ›„์—๋„ ์›๋ž˜์˜ ์ƒ๋Œ€์  ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜จ๋ผ์ธ ์ •๋ ฌ: ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์šฉ ์‚ฌ๋ก€:

  • ์ž‘์€ ๋ฐ์ดํ„ฐ์…‹
  • ์ด๋ฏธ ๋Œ€๋ถ€๋ถ„ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ
  • ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ

์„ ํƒ ์ •๋ ฌ(Selection Sort)

์ž‘๋™ ์›๋ฆฌ:

  • ๋ฐฐ์—ด์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ, ๊ฐ ์œ„์น˜์— ๋Œ€ํ•ด ํ•ด๋‹น ์œ„์น˜๋ถ€ํ„ฐ ๋ฐฐ์—ด ๋๊นŒ์ง€์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„ ํ•ด๋‹น ์œ„์น˜์™€ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ, ํ˜„์žฌ ์œ„์น˜์— ๊ฐ€์žฅ ์ž‘์€ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

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

  • ์ตœ์„ , ํ‰๊ท , ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ O(n²)

๊ณต๊ฐ„ ๋ณต์žก๋„:

  • O(1) (์ œ์ž๋ฆฌ ์ •๋ ฌ, ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๊ฑฐ์˜ ์—†์Œ)

ํŠน์ง•:

  • ๋น„์•ˆ์ • ์ •๋ ฌ: ๋™์ผํ•œ ๊ฐ’์˜ ์š”์†Œ๋“ค์ด ์ •๋ ฌ ํ›„์— ์›๋ž˜์˜ ์ƒ๋Œ€์  ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ „์ฒด ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ์— ์ƒ๊ด€์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์ ์šฉ ์‚ฌ๋ก€:

  • ์ž‘์€ ๋ฐ์ดํ„ฐ์…‹
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ

์ฃผ์š” ์ฐจ์ด์  ์š”์•ฝ

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž‘๋™ ๋ฐฉ์‹:

  • ์‚ฝ์ž… ์ •๋ ฌ: ํ˜„์žฌ ์š”์†Œ๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…
  • ์„ ํƒ ์ •๋ ฌ: ํ˜„์žฌ ์œ„์น˜๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„ ๊ตํ™˜

์•ˆ์ •์„ฑ:

  • ์‚ฝ์ž… ์ •๋ ฌ: ์•ˆ์ • ์ •๋ ฌ
  • ์„ ํƒ ์ •๋ ฌ: ๋น„์•ˆ์ • ์ •๋ ฌ

์ตœ์„ ์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„:

  • ์‚ฝ์ž… ์ •๋ ฌ: O(n) (์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ)
  • ์„ ํƒ ์ •๋ ฌ: O(n²) (ํ•ญ์ƒ ๋™์ผ)
728x90
๋ฐ˜์‘ํ˜•