Skip to content

Commit aa418e9

Browse files
committed
merge_sort, que->stack
1 parent a5c75cd commit aa418e9

3 files changed

Lines changed: 59 additions & 37 deletions

File tree

study/merge_sort.py

Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,20 @@
1-
def merge_sort(list):
2-
if len(list) <= 1:
3-
return list
4-
5-
# 분할
6-
mid = len(list)//2
7-
leftList = list[:mid]
8-
rightList = list[mid:]
9-
leftList = merge_sort(leftList)
10-
rightList = merge_sort(rightList)
11-
12-
# 정복
13-
return merge(leftList, rightList)
14-
15-
# 1 4 6 5 <- [1, 4, 5, 6]
16-
# 1 4 / 6 5 <- [1, 4] / [ 5, 6]
17-
# 1 / 4 / 6 / 5
18-
19-
def merge(left, right):
20-
result = []
21-
22-
while len(left) > 0 or len(right) > 0:
23-
if len(left) > 0 and len(right) > 0:
24-
if left[0] <= right[0]:
25-
result.append(left[0])
26-
left = left[1:]
27-
else:
28-
result.append(right[0])
29-
right = right[1:]
30-
elif len(left) > 0:
31-
result.extend(left)
32-
left = []
33-
elif len(right) > 0:
34-
result.extend(right)
35-
right = []
36-
37-
return result
1+
def merge_sort(arr):
2+
if len(arr) < 2:
3+
return arr
4+
5+
mid = len(arr) // 2
6+
low_arr = merge_sort(arr[:mid])
7+
high_arr = merge_sort(arr[mid:])
8+
9+
merged_arr = []
10+
l = h = 0
11+
while l < len(low_arr) and h < len(high_arr):
12+
if low_arr[l] < high_arr[h]:
13+
merged_arr.append(low_arr[l])
14+
l += 1
15+
else:
16+
merged_arr.append(high_arr[h])
17+
h += 1
18+
merged_arr += low_arr[l:]
19+
merged_arr += high_arr[h:]
20+
return merged_arr

study/merge_sort2.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
def merge_sort(arr):
2+
if len(arr) <= 1:
3+
return arr
4+
5+
mid = len(arr) // 2
6+
low_arr = merge_sort(arr[:mid])
7+
high_arr = merge_sort(arr[mid:])
8+
9+
merged_arr = []
10+
l = h = 0
11+
while l < len(low_arr) and h < len(high_arr):
12+
if low_arr[l] < high_arr[h]:
13+
merged_arr.append(low_arr[l])
14+
l += 1
15+
else:
16+
merged_arr.append(high_arr[h])
17+
h += 1
18+
merged_arr += low_arr[l:]
19+
merged_arr += high_arr[h:]
20+
return merged_arr

study/stack_queue/que_to_stack.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from collections import deque
2+
class MyStack:
3+
def __init__(self):
4+
self.q = deque()
5+
6+
def push(self, x):
7+
# 넣을 때마다 재정렬함으로 스택성질을 유지
8+
self.q.append(x)
9+
for _ in range(len(self.q)-1):
10+
self.q.append(self.q.popleft())
11+
12+
def pop(self):
13+
return self.q.popleft()
14+
15+
def top(self):
16+
return self.q[0]
17+
18+
def empty(self):
19+
return len(self.q) == 0

0 commit comments

Comments
 (0)