From c3e12c40a44b83a7b28272f696677b8b2d507a44 Mon Sep 17 00:00:00 2001 From: marina <138340846+bt3gl-cryptographer@users.noreply.github.com> Date: Wed, 2 Aug 2023 20:56:55 -0700 Subject: [PATCH] Create merge_sort.py --- sorting/merge_sort.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 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..9f8b227 --- /dev/null +++ b/sorting/merge_sort.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + + +def merge_sort(array): + + # part 1: recursively divide the array into subarrays + if len(array) < 2: + return array + + mid = len(array) // 2 + left = merge_sort(array[:mid]) + right = merge_sort(array[mid:]) + + # part 2: merge the subarrays + result = [] + i, j = 0, 0 + + while i < len(left) and j < len(right): + if left[i] <= right[j]: + result.append(left[i]) + i +=1 + else: + result.append(right[j]) + j +=1 + + if left[i:]: + result.extend(left[i:]) + if right[j:]: + result.extend(right[j:]) + + return result +