-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsort.py
69 lines (64 loc) · 1.52 KB
/
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
def merge(a, left, right):
n = len(left)
m = len(right)
#merged = [None]*(n+m)
i = 0
j = 0
k = 0
while i < len(left) and j < len(right):
if left[i]< right[j]:
a[k] = left[i]
i+=1
else:
a[k] = right[j]
j+=1
k+=1
while i < len(left):
a[k] = left[i]
i += 1
k += 1
while j < len(right):
a[k] = right[j]
j += 1
k += 1
def mergesort(a):
n = len(a)
if n>1:
mid = round(n/2)
left = a[:mid]
right = a[mid:]
mergesort(left)
mergesort(right)
merge(a, left, right)
def merge_sort (a):
n = len(a)
if n>1:
mid = round(n/2)
left = a[:mid]
right = a[mid:]
merge_sort(left)
merge_sort(right)
i = 0
j = 0
k = 0
while i < len(left) and j < len(right):
if left[i]< right[j]:
a[k] = left[i]
i+=1
else:
a[k] = right[j]
j+=1
k+=1
while i < len(left):
a[k] = left[i]
i += 1
k += 1
while j < len(right):
a[k] = right[j]
j += 1
k += 1
def factorial(n):
if n == 1:
return 1
else :
return n*factorial(n-1)