Skip to content

Instantly share code, notes, and snippets.

@ishankhare07
Created November 22, 2015 13:51
Show Gist options
  • Save ishankhare07/8810303801f23476bb81 to your computer and use it in GitHub Desktop.
Save ishankhare07/8810303801f23476bb81 to your computer and use it in GitHub Desktop.
merge sort in python
from random import shuffle
def merge(left, right, r_list=[]):
if not left and not right:
return r_list
elif not left:
r = right[0]
r_list.append(r)
return merge(left, right[1:], r_list)
elif not right:
l = left[0]
r_list.append(l)
return merge(left[1:], right, r_list)
else:
l = left[0]
r = right[0]
if l < r:
r_list.append(l)
return merge(left[1:], right, r_list)
else:
r_list.append(r)
return merge(left, right[1:], r_list)
def mergeSort(arr):
if len(arr) == 1:
return arr
else:
left = arr[:int(len(arr)/2)]
right = arr[int(len(arr)/2):]
left = mergeSort(left)
right = mergeSort(right)
arr = merge(left, right, [])
return arr
a = list(range(10))
shuffle(a)
print(a)
a = mergeSort(a)
print(a)
@ishankhare07
Copy link
Author

output:

[6, 2, 7, 5, 8, 0, 9, 1, 3, 4]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment