Skip to content

Commit 7a8ef3a

Browse files
Iterative Merge Sort in Python
1 parent 023312c commit 7a8ef3a

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

sorting/merge-sort-iterative.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Copyright (C) Deepali Srivastava - All Rights Reserved
2+
# This code is part of DSA course available on CourseGalaxy.com
3+
4+
def merge_sort(a):
5+
n=len(a)
6+
temp = [None]*n
7+
size = 1
8+
while size <= n-1:
9+
sort_pass(a, temp, size, n)
10+
size = size * 2
11+
12+
def sort_pass(a,temp,size,n):
13+
low1 = 0
14+
while low1+size <= n-1:
15+
up1 = low1 + size - 1
16+
low2 = low1 + size
17+
up2 = low2 + size - 1
18+
19+
if up2 >= n: # if length of last sublist is less than size
20+
up2 = n-1
21+
22+
merge(a, temp, low1, up1, low2, up2)
23+
24+
low1 = up2 + 1 # Take next two sublists for merging
25+
26+
for i in range(low1,n):
27+
temp[i] = a[i] # If any sublist is left alone
28+
29+
copy(a, temp, n)
30+
31+
# a[low1]...a[up1] and a[low2]...a[up2] merged to temp[low1]...temp[up2] */
32+
def merge(a, temp, low1, up1, low2, up2):
33+
i = low1
34+
j = low2
35+
k = low1
36+
37+
while i <= up1 and j <= up2:
38+
if a[i] <= a[j]:
39+
temp[k] = a[i]
40+
i+=1
41+
else:
42+
temp[k] = a[j]
43+
j+=1
44+
k+=1
45+
46+
while i <= up1:
47+
temp[k] = a[i]
48+
i+=1
49+
k+=1
50+
51+
while j <= up2:
52+
temp[k] = a[j]
53+
j+=1
54+
k+=1
55+
56+
# copies temp[low]....temp[up] to a[low]...a[up]
57+
def copy(a, temp, n):
58+
for i in range(n):
59+
a[i] = temp[i]
60+
61+
62+
#############################################################
63+
64+
list1 = [6,3,1,5,9,8]
65+
merge_sort(list1)
66+
print(list1)
67+
68+
list2 = [2,3,5,39,11,8,9,166,45,23]
69+
merge_sort(list2)
70+
print(list2)
71+
72+
list3 = [1,2,3,4,5,6,7,8,9,10]
73+
merge_sort(list3)
74+
print(list3)
75+
76+
list4 = [10,9,8,7,6,5,4,3,2,1]
77+
merge_sort(list4)
78+
print(list4)
79+
80+
list5 = [4]
81+
merge_sort(list5)
82+
print(list5)
83+
84+
#################################################################

0 commit comments

Comments
 (0)