ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ค์ด๊ฐ๊ธฐ ์ ์,
๋ฌธ์ ์์ ์ฃผ์ด์ง '์ ๋ ฌํ ๋์์ ๊ฐฏ์'๊ฐ ์ปค์ง๋ฉด ์ ๋ ฌ์ด ์ด๋ ต๋ค.
๊ทธ๊ฒ์ ๋ํ ํด๊ฒฐ์ฑ ์?
๋ถํ ์ ๋ณต ๊ธฐ๋ฒ(Divide-and-Conquer)
STEP 1. ์๋ ๋ฌธ์ ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์ ์๋ ์์ ๋ฌธ์ ๋ก ๋๋(Divide)
STEP 2. ๊ฐ๊ฐ์ ๋ฌธ์ ๋ฅผ ํ(Delegate)
STEP 3. ๊ฐ๊ฐ์ ๋ฌธ์ ์ ๋ต์ ์ด์ฉํด ์๋ ๋ฌธ์ ์ ๋ต์ ๋ง๋ ๋ค.(Combine)
์ ๋ ฌ์ ์ํ ๋ถํ ์ ๋ณต ๊ธฐ๋ฒ์ ๋ํ์ ์ผ๋ก ๋ ๊ฐ์ง๊ฐ ์๋ค.
1. ๋ณํฉ ์ ๋ ฌ(Merge sort)
2. ํต ์ ๋ ฌ(Quick sort)
๋ณธ๊ฒฉ์ ์ผ๋ก ๋ณํฉ ์ ๋ ฌ์ ๋ํด ์์๋ณด์.
์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ์์ด๋์ด
Divide - ์ ๋ ฌํ ๋ฆฌ์คํธ๋ฅผ ์ ์ชฝ ๋ฐ, ๋ค์ชฝ ๋ฐ์ผ๋ก ๋๋๋ค.
Half Delegate(Front) - ์ ์ชฝ ๋ฐ์ ์ ๋ ฌํ๋ค.
Half Delegate(Back) - ๋ค ์ชฝ ๋ฐ์ ์ ๋ ฌํ๋ค.
Combine - ์ด ๋์ ํฉ์ณ ํ๋์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.
์ด ์์ด๋์ด๋ฅผ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฌ๊ท์ ์ผ๋ก ์งํํ๋ค.
๋ณํฉ์ ๋ ฌ Python Code
def merge(A, B):
if(len(A) == 0):
return B
if(len(B) == 0):
return A
if(A[0] < B[0]):
return [A[0]] + merge(A[1:], B)
else:
return [B[0]] + merge(A, B[1:])
def mergesort(L):
if(len(L) == 1):
return L
return merge(mergesort(L[:int(len(L)/2)]), mergesort(L[int(len(L)/2):]))
์ ๋ ฅ ๋ฐ ์ถ๋ ฅ
๋ณํฉ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋
์ ํ์
T(n) = 2*T(n/2) + n, T(n) = Θ(nlogn)
์ฆ, n/2๊ฐ์ ๋ฆฌ์คํธ 2๊ฐ๋ฅผ ๊ฐ๊ฐ ์ ๋ ฌํ๊ณ , ์ด๋ฅผ ํฉ์น๋๋ฐ n๋ฒ ๋น๊ต
ํน์ง
1. ์ ๋ ฅ์ ํํ์ ์๊ด์์ด ์ธ์ ๋ ๊ฐ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด์ฅํ๋ค.
2. ์ธ์ ๋ ๋ฌธ์ ์ ํฌ๊ธฐ๊ฐ 1/2๋ก ์ค์ด๋ ๋ค.
์์์ผ๋ก ์ด๋ป๊ฒ ์งํ๋๋์ง ์ฐธ๊ณ ํด๋ณด์.
'๐ง๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ์ ๋ ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ ฌ] 6. ํ ์ ๋ ฌ (0) | 2022.11.30 |
---|---|
[์ ๋ ฌ] 5. ํต ์ ๋ ฌ (0) | 2022.11.30 |
[์ ๋ ฌ] 2. ์ ํ ์ ๋ ฌ (0) | 2022.11.30 |
[์ ๋ ฌ] 3.์ฝ์ ์ ๋ ฌ (0) | 2022.11.29 |
[์ ๋ ฌ] 1.๋ฒ๋ธ์ ๋ ฌ (0) | 2022.11.29 |
- Total
- Today
- Yesterday
- ์๋ฌ
- ์ ๋ ฌ
- git
- github
- react
- ๊ทธ๋ํ
- React Query
- ๋ฆฌ์กํธ
- ๋ธ๋ผ์ฐ์
- DOM
- leetcode
- ํจ์
- ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
- JavaScript
- BOJ
- ์๋ฃ๊ตฌ์กฐ
- error
- Component
- mdn
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Context API
- zustand
- ์๋ฐ์คํฌ๋ฆฝํธ
- state
- useState
- Python
- CSS
- Browser
- DB
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |