Data Structures & Algorithms

[Algorithms] Basic 병합정렬 / 퀵정렬

숄구-ml 2022. 5. 29. 22:16
  • 병합 정렬 설명 - 후위순회

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 Dsort(lt, rt):
    if lt < rt:
        mid = (lt + rt) // 2
        Dsort(lt, mid)
        Dsort(mid+1, rt)
 
        pt1 = lt
        pt2 = mid+1
        temp=[]
        while pt1 <= mid and pt2 <= rt:
            if arr[pt1] < arr[pt2]:
                temp.append(arr[pt1])
                pt1+=1
            else:
                temp.append(arr[pt2])
                pt2+=1
        if pt1<=mid:
            temp=temp+arr[pt1:mid+1]
        if pt2<=rt:
            temp=temp+arr[pt2:rt+1]
 
        for i in range(len(temp)):
            arr[lt+i]=temp[i]
 
if __name__=='__main__':
    arr=[2311453615673321]
    print("Before sort : ", end='')
    print(arr)
 
    Dsort(07)
 
    print('After sort : ', end='')
    print(arr)
 
cs

 

 

 

 

 

 

  • 퀵 정렬 설명 - 전위순회 
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
def Qsort(lt, rt):
 
    if lt < rt:
        pivot = arr[rt]
        pos = lt
        for i in range(lt, rt):
            if arr[i] < pivot:
                arr[pos], arr[i] = arr[i], arr[pos]
                pos += 1
        arr[pos], arr[rt] = arr[rt], arr[pos]
        Qsort(lt, pos-1)
        Qsort(pos+1, rt)
 
 
if __name__=='__main__':
    arr=[45212336156711602033]
    print("Before sort : ", end='')
    print(arr)
 
    Qsort(09)
 
    print('After sort : ', end='')
    print(arr)
 
 
 
cs
728x90