Skip to content

Instantly share code, notes, and snippets.

@supphawit
Last active July 4, 2018 07:56
Show Gist options
  • Save supphawit/98d66265fa5a4b6190e3401d3c2c12a7 to your computer and use it in GitHub Desktop.
Save supphawit/98d66265fa5a4b6190e3401d3c2c12a7 to your computer and use it in GitHub Desktop.
def mergeSort(alist):
if len(alist) == 1:
return alist
if len(alist) > 1:
mid = len(alist)//2
leftList = alist[:mid]
rightList = alist[mid:]
mergeLeft = mergeSort(leftList)
mergeRight = mergeSort(rightList)
resultMerge = popmin(mergeLeft,mergeRight)
return resultMerge
def popmin(left,right):
result = []
while left or right:
if not left:
result.append(right[0])
right.pop(0)
elif not right:
result.append(left[0])
left.pop(0)
elif left[0] >= right[0]:
result.append(right[0])
right.pop(0)
elif right[0] >= left[0]:
result.append(left[0])
left.pop(0)
return result
listNumber = [6,5,3,1,8,7,2,4]
print (mergeSort(listNumber))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment