์ฝ์ ์ ๋ ฌ์ ํ์ฌ ๋น๊ตํ๊ณ ์ ํ๋ target(ํ๊ฒ)๊ณผ ๊ทธ ์ด์ ์ ์์๋ค๊ณผ ๋น๊ตํ๋ฉฐ ์๋ฆฌ๋ฅผ ๊ตํํ๋ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋๋ค.
- ํ์ฌ ํ๊ฒ์ด ๋๋ ์ซ์์ ์ด์ ์์น์ ์๋ ์์๋ค์ ๋น๊ตํฉ๋๋ค. (์ฒ์์ ๋๋ฒ์งธ ์์๋ถํฐ ์์ํฉ๋๋ค)
- ํ๊ฒ์ด ๋๋ ์ซ์๊ฐ ์ด์ ์์น์ ์๋ ์์๋ณด๋ค ์๋ค๋ฉด ์์น๋ฅผ ์๋ก ๊ตํํฉ๋๋ค.
- ๊ทธ ๋ค์ ํ๊ฒ์ ์ฐพ์ ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๋ณตํฉ๋๋ค.
- ๊ณต๊ฐ ๋ณต์ก๋
- ์ฃผ์ด์ง ๋ฐฐ์ด ์์์ ๊ตํ(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ยฒ)์ด๋ฏ๋ก ๋นํจ์จ์ ์ ๋๋ค.
- ์์์ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ๋น๊ต ํ์๊ฐ ๋ง์์ ธ ์ฑ๋ฅ์ด ์ ํ ๋ฉ๋๋ค.
๋ฌธ์
ํ์ด
ํํธ๋ฅผ ๋ณด๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ O(nยฒ)์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ํ ์ ์์ต๋๋ค.
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)
- ์ด์ ์ธ๋ฑ์ค์ ๊ฐ๊ณผ ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ์ ๋น๊ตํฉ๋๋ค.
- ์์ ๊ฐ์ ์์ผ๋ก ๋ณด๋ด์ค๋๋ค.