๐ง Algorithm/์ฌ์ฌํ์ด ๋
์ฝฉ๐ฅ
์ฌ์ฌํ์ด ๋ ์ฝฉ๐ฅ : ์ฝ์ ์ ๋ ฌ(Insertion Sort)
4:Bee
2023. 9. 19. 01:48
728x90
์ฝ์ ์ ๋ ฌ์ ์ ๋ ฌ๋์ง ์์ ๋ถ๋ถ์์ ๊ฐ์ ์ถ์ถํ์ฌ ์ด๋ฏธ ์ ๋ ฌ๋ ๋ถ๋ถ์ ์ฌ๋ฐ๋ฅธ ์์น์ ์ฝ์ ํ๋ ๋ฐฉ์์ด๋ค.
| arr = [1,6,9,3,4] | ||||
| len = 5 | ||||
| [n][arr] | ||||
| i = 0 / | i = 1 / | i = 2 / | i = 3 / | i = 4 / |
| j = 0 / | j = 0 / | j = 0 / | j = 0 / | j = 0 / |
| j = 1 / | j = 1 / | j = 1 / | j = 1 / | |
| j = 2 / | j = 2 / | j = 2 / | ||
| j = 3 / | j = 3 / | |||
| j = 4 / | ||||
def insertion_sort(arr):
n = len(arr) # ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ ์ฅ
for i in range(1, n): # ๋ฐฐ์ด ๊ธธ์ด 5๋ฅผ ๊ธฐ์ค์ผ๋ก 1์์ 5๊น์ง์ ๋ฒ์
#*๋ ํด๋น ๋ฐฐ์ด์ ๊ฐ
key = arr[i] # 1,2,9,3,4๋ฅผ ๊ธฐ์ค์ผ๋ก key์ ๊ฐ์ ์ ์ฅ (1์ผ ๋ *6)
j = i - 1 # j์ ๊ฐ์ ํ์ฑ
while j >= 0 and key < arr[j]: #j๋ i๊ฐ ์คํ๋๋ ๊ฐ๋งํผ ์ฐจ๊ฐ (i๊ฐ 1์ผ ๋ *6/ j๋ 0์ผ๋ก *1)
# 0 & 6 < 0 => false
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key #i๊ฐ 1์ผ ๋ *6/ j๋ 0์ผ๋ก *1/ arr[j + 1]์ธ arr[1]์ 6์์ 6์ด๋ค. ์ฆ, ๋ณํ ์์
print(arr)
arr = [1,6,9,3,4]
insertion_sort(arr)
print(arr)
์ฝ์ ์ ๋ ฌ์ ์ฝ์ ๊ณผ์ ์ ์ฃผ์๋ฅผ ํด์ ๋ด์ผํ๋ค. ๊ฐ์ ์ฝ์ ์ด ์ด๋ป๊ฒ ์ด๋์ ์ด๋ฃจ์ด์ง๋์ง ์ ์ฌํ ๋ณด์.
728x90