-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMerge_sort.py
More file actions
53 lines (44 loc) · 1.29 KB
/
Merge_sort.py
File metadata and controls
53 lines (44 loc) · 1.29 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import numpy as np
class MergeSort():
def __init__(self, array):
self.array = array
self.space = np.zeros(array.shape[0])
def Mergesort(self):
return self.MergesortInner(0, self.array.shape[0] - 1)
def MergesortInner(self, left, right):
if(left == right):
return
mid = (left + right) // 2
self.MergesortInner(left, mid)
self.MergesortInner(mid + 1, right)
self.Merge(left, mid, right)
return self.array
def Merge(self, left, mid, right):
le = left
r = mid + 1
a = left
while(le <= mid and r <= right):
if(self.array[le] > self.array[r]):
self.space[a] = self.array[r]
r = r + 1
else:
self.space[a] = self.array[le]
le = le + 1
a = a + 1
while(le <= mid):
self.space[a] = self.array[le]
a = a + 1
le = le + 1
while(r <= right):
self.space[a] = self.array[r]
a = a + 1
r = r + 1
for i in range(left, right + 1, 1):
self.array[i] = self.space[i]
return
def main():
array = np.random.randn(400)
merge = MergeSort(array)
print(merge.Mergesort())
pass
main()