Skip to content

Instantly share code, notes, and snippets.

@ehzawad
Created December 5, 2019 06:29
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 ehzawad/37de313002317fb5f175d2db7f4f020a to your computer and use it in GitHub Desktop.
Save ehzawad/37de313002317fb5f175d2db7f4f020a to your computer and use it in GitHub Desktop.
def merge(leftSubList, rightSubList):
iLeftIterator = 0
jRightIterator = 0
mergedList = []
while iLeftIterator < len(leftSubList) and jRightIterator < len(rightSubList):
if leftSubList[iLeftIterator] <= rightSubList[jRightIterator]:
mergedList.append(leftSubList[iLeftIterator])
iLeftIterator = iLeftIterator + 1
else:
mergedList.append(rightSubList[jRightIterator])
jRightIterator = jRightIterator + 1
mergedList = mergedList + leftSubList[iLeftIterator:]
mergedList = mergedList + rightSubList[jRightIterator:]
return mergedList
def splitAndMerge(theList):
if len(theList) <= 1:
return theList
else:
midpoint = int(len(theList)/2)
leftSubList = splitAndMerge(theList[:midpoint])
rightSubList = splitAndMerge(theList[midpoint:])
return merge(leftSubList, rightSubList)
myNumbers = [2, 4, 5, 6, 0, 1, 11, 33]
print(splitAndMerge(myNumbers))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment