From 639d7d30b67446599a06bb3e25070c0f63b9c972 Mon Sep 17 00:00:00 2001 From: Adriano Laureano Date: Fri, 12 Oct 2018 21:37:53 -0300 Subject: [PATCH] Create merge_sort.py --- sorting/merge_sort.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sorting/merge_sort.py diff --git a/sorting/merge_sort.py b/sorting/merge_sort.py new file mode 100644 index 0000000..20beb82 --- /dev/null +++ b/sorting/merge_sort.py @@ -0,0 +1,27 @@ +def merge_sort(a): + if len(a) < 2: + return a + l = a[0:len(a)//2] + r = a[len(a)//2:] + return merge(merge_sort(l), merge_sort(r)) + + +def merge(a, b): + out = [] + i = 0 + j = 0 + while i < len(a) or j < len(b): + if i >= len(a): + out.append(b[j]) + j += 1 + elif j >= len(b): + out.append(a[i]) + i += 1 + else: + if a[i] <= b[j]: + out.append(a[i]) + i += 1 + else: + out.append(b[j]) + j += 1 + return out