Skip to content

Instantly share code, notes, and snippets.

@ph87
Last active January 19, 2017 11:37
Show Gist options
  • Save ph87/40f4294159ce95c131e64f211997d684 to your computer and use it in GitHub Desktop.
Save ph87/40f4294159ce95c131e64f211997d684 to your computer and use it in GitHub Desktop.
implementation of merge sorting
from unittest import (
main,
TestCase,
)
from random import Random
def merge(lst):
if len(lst) <= 1:
return lst
def _merge(left, right):
result = []
while left and right:
if left[0] <= right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
result.extend(right if right else left)
return result
left = merge(lst[:len(lst)//2])
right = merge(lst[len(lst)//2:])
return _merge(left, right)
class MergeTestCase(TestCase):
def setUp(self):
self.data = list(
Random().sample(range(10000), 100)
for i in range(100)
)
def testMerge(self):
for _data in self.data:
print _data
self.assertEqual(
merge(_data),
sorted(_data),
)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment