-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmergeSort.py
More file actions
61 lines (53 loc) · 1.6 KB
/
Copy pathmergeSort.py
File metadata and controls
61 lines (53 loc) · 1.6 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
54
55
56
57
58
59
60
61
# def merge(l,r):
# # considering that both the array is already sorted
# arr=[]
# while len(l)>0 and len(r)>0:
# if l[0]>r[0]:
# arr.append(l[0])
# l.pop(0)
# else:
# arr.append(r[0])
# r.pop(0)
# arr.extend(r)
# arr.extend(l)
# return arr
# def mergeSort(arr):
# # print(arr)
# if len(arr)>0:
# if len(arr)==1:
# # print(arr)
# return arr
# else:
# half=int(len(arr)/2)
# l=mergeSort(arr[:half])
# r=mergeSort(arr[half:])
# return merge(l,r)
class meg:
def __init__(self,arr):
self.arr=arr
def merge(self,left,right):
i=left[1]
j=right[0]
for i in range(right[0],right[1]+1):
while i>left[0]:
if self.arr[i]>self.arr[i-1]:
self.arr[i],self.arr[i-1]=self.arr[i-1],self.arr[i]
i=i-1
return list([left[0],right[1]])
def mergeSOrt(self,start,end):
if end==start:
return list([start,end])
else:
half=int((start+end)/2)
left = self.mergeSOrt(start,half)
right = self.mergeSOrt(half+1,end)
return self.merge(left,right)
def function(self):
arr = self.mergeSOrt(0,len(l)-1)
print(self.arr)
if __name__ == "__main__":
l=[552, 655, 646, 622, 681, 516, 595, 657, 685, 600, 560, 614, 550, 589]
# l=[2,2,2,2]
a=meg(l)
a.function()
# print(arr)