forked from apachecn/Interview
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMergeSort.py
More file actions
executable file
·35 lines (29 loc) · 804 Bytes
/
MergeSort.py
File metadata and controls
executable file
·35 lines (29 loc) · 804 Bytes
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
# coding: utf-8
def MergeSort(nums):
if len(nums) <= 1:
return nums
num = int(len(nums)/2)
# 从中间,进行数据的拆分, 递归的返回数据进行迭代排序
left = MergeSort(nums[:num])
right = MergeSort(nums[num:])
print("left: ", left)
print("right: ", right)
print("-" * 20)
return Merge(left, right)
def Merge(left, right):
l, r = 0, 0
result = []
while l < len(left) and r < len(right):
if left[l] < right[r]:
result.append(left[l])
l += 1
else:
result.append(right[r])
r += 1
result += left[l:]
result += right[r:]
return result
if __name__ == "__main__":
nums = [2, 6, 8, 5, 1, 4, 9, 3, 7]
nums = MergeSort(nums)
print('result:', nums)