- Notifications
You must be signed in to change notification settings - Fork 604
/
Copy pathmerge_sort.py
40 lines (32 loc) · 1001 Bytes
/
merge_sort.py
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
classMergeSort(object):
def__init__(self, numbers):
self.values=numbers
self.count=len(numbers)
defsort(self):
self.merge_sort(0, self.count-1)
returnself.values
defmerge_sort(self, low, high):
iflow<high:
mid= (low+high) //2
self.merge_sort(low, mid)
self.merge_sort(mid+1, high)
self.merge(low, mid, high)
defmerge(self, low, mid, high):
b= []
i=low
j=mid+1
whilei<=midandj<=high:
ifself.values[i] <=self.values[j]:
b.append(self.values[i])
i+=1
else:
b.append(self.values[j])
j+=1
whilei<=mid:
b.append(self.values[i])
i+=1
whilej<=high:
b.append(self.values[j])
j+=1
forindex, valinenumerate(b):
self.values[low+index] =val