ํค์๋
- ์๊ณ ๋ฆฌ์ฆ
- ์ ๋ ฌ
- ๋ฒ๋ธ์ ๋ ฌ
- ์ฝ์ ์ ๋ ฌ
- ์ ํ์ ๋ ฌ
์๊ณ ๋ฆฌ์ฆ
๊ตฌ๊ตฌ๋จ์ ์์๋ก ๋ ๋ค๋ฉด
๊ตฌ๊ตฌ๋จ์ ์ซ์๋ค์ ์๋ฃ๊ตฌ์กฐ
, ๊ณฑ์
์ ์๊ณ ๋ฆฌ์ฆ
์ ํด๋น
์ฆ, ์๋ฃ๊ตฌ์กฐ
๋ ๊ธฐ๋ฐ, ์๊ณ ๋ฆฌ์ฆ
์ ๋ฐฉ๋ฒ
[์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ
- ๋ง ๊ทธ๋๋ก ์๋ฃ๋ค์ ์ผ์ ํ ๊ท์น์ ๋ง๊ฒ ์ ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ(๋ณดํต์ ์ค๋ฆ์ฐจ์)
[์ ๋ ฌ] ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort)
- ์ค๋ฅธ์ชฝ๋ถํฐ ์ ๋ ฌ๋๋ฉฐ ๋ง์น ๊ฑฐํ์ด ์ฌ๋ผ์ค๋ ๋ชจ์
- ์๋ก ์ด์ํ ๋ ์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๊ณ ๊ตํ์ ๋ฐ๋ณต
- ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ์ฌ์ค์ ๊ฐ์ฅ ๋นํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ
- 1๋ฒ์งธ ํญ๋ชฉ๊ณผ 2๋ฒ์งธ ๋น๊ต ํ 1๋ฒ์งธ๊ฐ ๋ ํฌ๋ฉด ํญ๋ชฉ ๊ต์ฒด
- 2๋ฒ์งธ, 3๋ฒ์งธ
~์ญ 1๋ฒ์ฒ๋ผ ๋ฐ๋ณต
(ํ๋ฒ์ ์ฌ์ดํด์ ๋ง์น๋ฉด ๊ฐ์ฅ ๋์๋ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์์นํ๊ฒ ๋จ. ๋ฐ๋ผ์ ๊ฐ์ฅ ๋๋จ์ ๋ ์๋ด๋ ๊ด์ฐฎ๋ค.) - ํ ์ฌ์ดํด์ ๋๊ณ ๋๋ฉด ๋ง์ง๋ง์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์์นํ๊ธฐ ๋๋ฌธ์ ๋ค์ 1๋ฒ์งธ๋ถํฐ n-1๋ฒ์งธ๊น์ง ๋ฐ๋ณต
- ๋ชฉ๋ก์ ์ ๋ ฌ ์ฌ๋ถ์ ์๊ด์์ด ๋ฌด์กฐ๊ฑด ์ด์ค๋ฐ๋ณต๋ฌธ์ ๋ํ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ๋๋ฏ๋ก O(n^2)
- ๋ฐ๋ก ์ด์ํ ๋ ธ๋๋ง ๊ตํํ๋ฏ๋ก ๋น๊ต์ ์์ ์
def bubble_sort(li):
n = len(li)
for i in range(n):
for j in range(n - 1 - i):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
return li
[์ ๋ ฌ] ์ฝ์ ์ ๋ ฌ(Insertion Sort)
- ์ผ์ชฝ 1๊ฐ๋ถํฐ ์ ํํ์ฌ ์ ๋ ฌ ๋ฐฐ์ด์ด๋ผ ๊ฐ์ ํ๊ณ ์ค๋ฅธ์ชฝ์ ๊ฐ๋ค์ ํ๋์ฉ ์ฝ์ ํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ
- ์์์ ํ์์์ญ(์ ๋์ด ๋์๋ค๊ณ ๊ฐ์ ํ๋ ์ ๋ ฌ)์ ๋ํด ํ์์์์ญ(์๋ก ๊ฐ์ ๋ณด๋ด๋ ์์ญ)์์ ๊ฐ์ ๊ฐ์ ธ์ด
- 31์ด ํ์์์ญ์ ๋ํด์ ํ์์ ์ค๋ฅธ์ชฝ(๊ฐ์ด ํฐ ๋ถ๋ถ)๋ถํฐ ๋น๊ตํ๋ฉฐ 31์ด ํฐ ๊ฒฝ์ฐ ๊ทธ ์๋ฆฌ์์ ์ค์
- ์ ํ์ ๋ ฌ๊ณผ ๋น์ทํ์ง๋ง, ๊ฐ์ด ๊ฐ์ฅ ์์ ์์๋ฅผ ์ ํํ์ง ์๊ณ ๋น๊ต ํ ์ฝ์ ์ ๋์์ ์งํ
- ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋๋ฐ ํนํ
- ๋ฒ๋ธ, ์ ํ ์ ๋ ฌ์ด ์ ์ฐจ ๋น๊ต/ํ์ ๋ฒ์๊ฐ ์ข์์ง๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ์ฝ์ ์ ๋ ฌ์ ์ ์ฐจ ์ปค์ง(ํ์๋ถ๋ถ์ด ์ปค์ง๋๊น)
- ์์ฃผ ์ด์์ ์ผ๋ก ์ ๋๋ ์ ๋ ฌ์ ๋ํด์ O(n)์ด์ง๋ง ์ต์ ์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ๋ํด์ O(n^2)
def insertion_sort(li):
for i in range(1, len(li)):
for j in range(i, 0, -1):
if li[j] < li[j-1]:
li[j-1], li[j] = li[j], li[j-1]
return li
[์ ๋ ฌ] ์ ํ์ ๋ ฌ(Selection Sort)
- ๊ฐ์ฅ ์ผ์ชฝ๋ถํฐ ๋๋จธ์ง ์ ๋ ฌ์์์ ์ต์๊ฐ๊ณผ ๋น๊ตํ์ฌ ์ค์ํ๋ฉฐ ์งํ
- ๊ฐ์ฅ ์ผ์ชฝ์ ์ต์๊ฐ์ด ๋ค์ด๊ฐ๋ฉด์ ์ ์ฐจ ํ์ํ๋ ๋ฒ์๊ฐ ์ค์ด๋๋ ๊ตฌ์กฐ
- '์ต์๊ฐ์ ๊ฐ๋ ๋ ธ๋ ์ ํ -> ์ผ์ชฝ๊ฐ๊ณผ ๋น๊ต -> ๊ตํ
- ์๋ก ์ด์ํ์ง ์์ ๋ ธ๋๋ฅผ ๊ตํํ๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๋ถ์์
- ๋ํ ์ธ๋ถ ๋ฐ ๋ด๋ถ๋ฃจํ ๋ชจ๋ O(n)์ผ๋ก ์ด์ค๋ฐ๋ณต๋ฌธ์ด๋ฏ๋ก O(n^2)
def selection_sort(li):
for i in range(len(li)):
min_idx = i
for j in range(i+1, len(li)):
if li[j] < li[min_idx]:
min_idx = j
li[i], li[min_idx] = li[min_idx], li[i]
return li
๊ตํ(์ค์)
1) ์ผ๋ฐ์ ์ธ ์ค์ ๋ฐฉ์
a = 1
b = 2
temp = a
a = b
b = temp
2) ํ์ด์ฌ์์ ๊ตฌํ ๊ฐ๋ฅํ ์ค์ ๋ฐฉ์
a = 1
b = 2
a, b = b, a
์๊ณ ๋ฆฌ์ฆ์ ์
๋ฌธ์ผ๋ก ๋ง์ด ๋ฐฐ์ฐ๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ํ์ต!
์์ ์ ๋ ฌ์ ์์ฃผ ๊ธฐ์ด์ด๊ณ ํจ์จ๋ฉด์์ ์ค์ฉ์ฑ์ ๋จ์ด์ง๋ค!
์ค์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ข
๋ฅ๋ ์ ๋ง ๋ง๋ค!
'๐ฟ Data > ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 101. [๋ถํ ์ ๋ณต, ์ ๋ ฌ] ํต ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ (0) | 2022.04.07 |
---|---|
[TIL] 100. [์๊ณ ๋ฆฌ์ฆ] ํ์ (0) | 2022.04.06 |
[TIL] 98. [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ (0) | 2022.04.05 |
[TIL] 97. ์ฌ๊ท(Recursion) (0) | 2022.04.05 |
[TIL] 96. ์ถ์ ์๋ฃํ(Abstract Data Type ; ADT) (0) | 2022.04.04 |