- 병합 정렬 설명 - 후위순회
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=[23, 11, 45, 36, 15, 67, 33, 21]
print("Before sort : ", end='')
print(arr)
Dsort(0, 7)
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=[45, 21, 23, 36, 15, 67, 11, 60, 20, 33]
print("Before sort : ", end='')
print(arr)
Qsort(0, 9)
print('After sort : ', end='')
print(arr)
|
cs |
728x90
'Data Structures & Algorithms' 카테고리의 다른 글
[Algorithms] 동적 계획법(Dynamic Programming)-네트워크 선 자르기(Bottom up) / (Top Down) 2가지 방식 (0) | 2022.05.30 |
---|---|
[Algorithms] 동적 계획법(Dynamic Programming) 설명 (0) | 2022.05.30 |
[Algorithms] 깊이/넓이 우선 탐색 (DFS, BFS) 활용-미로의 최단거리 통로 (BFS 활용) (0) | 2022.05.29 |
[Algorithms] 깊이/넓이 우선 탐색 (DFS, BFS) 활용-사과나무(BFS) (0) | 2022.05.29 |
[Algorithms] 깊이/넓이 우선 탐색 (DFS, BFS) 활용-송아지 찾기(BFS:상태트리 탐색) (0) | 2022.05.29 |