Skip to content

Instantly share code, notes, and snippets.

@cgopalan
Created March 24, 2012 22:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cgopalan/2188517 to your computer and use it in GitHub Desktop.
Save cgopalan/2188517 to your computer and use it in GitHub Desktop.
Mergesort In Python
def mergesort(arr, n):
if n == 1: return arr
len_half = int(n/2)
return merge(mergesort(arr[:len_half], len_half),
mergesort(arr[len_half:], n - len_half), n)
def merge(arr1, arr2, n):
result = []
i,j = 0,0
for x in range(n):
if len(arr1) <= i:
result.extend(arr2[j:])
return result
elif len(arr2) <= j:
result.extend(arr1[i:])
return result
elif arr1[i] < arr2[j]:
result.append(arr1[i])
i += 1
elif arr2[j] < arr1[i]:
result.append(arr2[j])
j += 1
return result
if __name__ == '__main__':
l = [3,5,6,1,2,8,4,7]
print("Sorted array :", mergesort(l, len(l)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment