ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๋“ค์–ด๊ฐ€๊ธฐ ์ „์—,

 

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ '์ •๋ ฌํ•  ๋Œ€์ƒ์˜ ๊ฐฏ์ˆ˜'๊ฐ€ ์ปค์ง€๋ฉด ์ •๋ ฌ์ด ์–ด๋ ต๋‹ค.

 

๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€? 

๋ถ„ํ•  ์ •๋ณต ๊ธฐ๋ฒ•(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๋กœ ์ค„์–ด๋“ ๋‹ค.


์˜์ƒ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ์ฐธ๊ณ ํ•ด๋ณด์ž.

 

 

 

 

 

 

728x90
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
ยซ   2025/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ
250x250