Skip to content

Instantly share code, notes, and snippets.

@suewonjp
Created December 25, 2017 09:17
Show Gist options
  • Save suewonjp/f72aec9742952695a519aca127bc2ba5 to your computer and use it in GitHub Desktop.
Save suewonjp/f72aec9742952695a519aca127bc2ba5 to your computer and use it in GitHub Desktop.
Merge sort implementation in Python
def merge(lblock, rblock):
li, ri, llen, rlen = 0, 0, len(lblock), len(rblock)
merged = []
for _ in range(llen + rlen):
if li < llen and (ri >= rlen or lblock[li] < rblock[ri]):
merged.append(lblock[li])
li += 1
else:
merged.append(rblock[ri])
ri += 1
return merged
mergesort = lambda data: (merge(mergesort(data[0:len(data)//2]), mergesort(data[len(data)//2:])) if len(data) >= 2 else data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment