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
32
33
34
35
def Mergesort(arr):
    result = []
 
    if len(arr) <= 1:
        return arr
 
    size = len(arr) / 2
 
    left = Mergesort(arr[:size])
    right = Mergesort(arr[size:])
 
    r_idx = 0
    l_idx = 0
 
    while r_idx < len(right) and l_idx < len(left):
        if right[r_idx] < left[l_idx]:
            result.append(right[r_idx])
            r_idx += 1
        else:
            result.append(left[l_idx])
            l_idx += 1
 
    for i in right[r_idx:]:
        result.append(i)
 
    for i in left[l_idx:]:
        result.append(i)
 
    return result
 
 
if __name__ == '__main__':
    arr = [214510]
 
    print (Mergesort(arr))
cs


분할 정렬 그림만 보고 작성했다

내 생각을 바로 코드로 만드니까 뭔가 보람차다

어려운 거 하면 힘들겠지만