Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
oorrja
GitHub Repository: oorrja/learntosolveit
Path: blob/master/languages/python/algorithm_mergesort.py
1240 views
1
import random
2
import math
3
4
def merge(left,right):
5
result = []
6
while left and right:
7
if left[0] < right[0]:
8
result.append(left.pop(0))
9
else:
10
result.append(right.pop(0))
11
if left:
12
result.extend(left)
13
else:
14
result.extend(right)
15
return result
16
17
def mergesort(m):
18
left = []
19
right = []
20
result = []
21
22
if len(m) <=1:
23
return m
24
middle = len(m)/2
25
26
left = m[:middle]
27
right = m[middle:]
28
29
left = mergesort(left)
30
right = mergesort(right)
31
32
if left[-1] > right[0]:
33
result = merge(left, right)
34
else:
35
result = left + right
36
return result
37
38
p = random.sample(list(range(10)),8)
39
print(p)
40
print(mergesort(p))
41
42