Skip to content

Latest commit

ย 

History

History
65 lines (50 loc) ยท 2.91 KB

Insertion_Sort.md

File metadata and controls

65 lines (50 loc) ยท 2.91 KB

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

์‚ฝ์ž…์ •๋ ฌ์€ ํ˜„์žฌ ๋น„๊ตํ•˜๊ณ ์ž ํ•˜๋Š” target(ํƒ€๊ฒŸ)๊ณผ ๊ทธ ์ด์ „์˜ ์›์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉฐ ์ž๋ฆฌ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์ •๋ ฌ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ •๋ ฌ ๊ณผ์ •

  1. ํ˜„์žฌ ํƒ€๊ฒŸ์ด ๋˜๋Š” ์ˆซ์ž์™€ ์ด์ „ ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๋“ค์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. (์ฒ˜์Œ์€ ๋‘๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค)
  2. ํƒ€๊ฒŸ์ด ๋˜๋Š” ์ˆซ์ž๊ฐ€ ์ด์ „ ์œ„์น˜์— ์žˆ๋˜ ์›์†Œ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์œ„์น˜๋ฅผ ์„œ๋กœ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ทธ ๋‹ค์Œ ํƒ€๊ฒŸ์„ ์ฐพ์•„ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

GIF๋กœ ์ดํ•ดํ•˜๊ธฐ

แ„‰แ…กแ†ธแ„‹แ…ตแ†ธแ„Œแ…ฅแ†ผแ„…แ…งแ†ฏ

ํŠน์ง•

  • ๊ณต๊ฐ„ ๋ณต์žก๋„
    • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์•ˆ์—์„œ ๊ตํ™˜(swap)์„ ํ†ตํ•ด, ์ •๋ ฌ์ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ O(n)์ž…๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ์ตœ์„ ์˜ ๊ฒฝ์šฐ : ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋œ ์ผ€์ด์Šค - O(n)
      • ์‚ฝ์ž…์ •๋ ฌ์€ break ํ‚ค์›Œ๋“œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
      • ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋ผ๋ฉด ์›์†Œ์˜ ๋ฐ”๋กœ ์•ž ์›์†Œ์™€ ๋น„๊ต ์‹œ break ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ for๋ฌธ์„ ํƒˆ์ถœํ•ฉ๋‹ˆ๋‹ค.
      • ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์™ธ๋ถ€ for๋ฌธ์— ์˜ํ•ด ๊ฒฐ์ •๋˜์–ด O(n)์ž…๋‹ˆ๋‹ค.
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ : ๋ฐ์ดํ„ฐ๊ฐ€ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ผ€์ด์Šค - O(nยฒ)
      • ์—ญ์ˆœ์œผ๋กœ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด ๋งค ์‚ฌ์ดํด๋งˆ๋‹ค ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊นŒ์ง€ ๋ฐฉ๋ฌธํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ํƒ์ƒ‰์ด (n-1)๋ฒˆ, (n-2)๋ฒˆ ... 1๋ฒˆ ์ง„ํ–‰๋˜๋ฏ€๋กœ n(n-1)/2, ์ฆ‰ O(nยฒ)์ž…๋‹ˆ๋‹ค.
    • ์ตœ์„  : O(n), ํ‰๊ท /์ตœ์•… : O(nยฒ)

์žฅ์ 

  • Selection Sort๋‚˜ Bubble Sort๊ณผ ๊ฐ™์€ O(nยฒ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋น„๊ตํ•˜์—ฌ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐ์—ด ๊ฐ’๋“ค์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋งค์šฐ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ํ‰๊ท ๊ณผ ์ตœ์•…์ธ ์ƒํ™ฉ์—์„  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(nยฒ)์ด๋ฏ€๋กœ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋น„๊ต ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ ์„ฑ๋Šฅ์ด ์ €ํ•˜ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์ œ (Baekjoon)

๋ฐฑ์ค€ - ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ

๋ฌธ์ œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-01-18 แ„‹แ…ฉแ„’แ…ฎ 6 01 12

ํ’€์ด

ํžŒํŠธ๋ฅผ ๋ณด๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(nยฒ)์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ(Python)

n = int(input())
numbers = []

for _ in range(n):
    numbers.append(int(input()))

# Insertion Sort
for i in range(1, n):
    for j in range(i, 0, -1):      
        if numbers[j - 1] > numbers[j]:       # 1. 
            numbers[j], numbers[j - 1] = numbers[j - 1], numbers[j]     # 2.

for n in numbers:
    print(n)
  1. ์ด์ „ ์ธ๋ฑ์Šค์˜ ๊ฐ’๊ณผ ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  2. ์ž‘์€ ๊ฐ’์„ ์•ž์œผ๋กœ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.

Reference