Commit dd8c56ce authored by Aku Niskanen's avatar Aku Niskanen
Browse files

Merge-sort

parent b6fd9edc
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -8,6 +8,40 @@ def debug_print(debug_msg=None, **kwargs):
        print("{}: {}".format(key, value))


def mergesort(array):
    debug_print(array=array)
    if len(array) <= 1:
        return array

    m = len(array) // 2
    debug_print(m=m)

    left = mergesort(array[:m])
    right = mergesort(array[m:])

    return merge(left, right)


def merge(left, right):
    debug_print(debug_msg="Merging...", left=left, right=right)

    merged = []

    while len(left) > 0 and len(right) > 0:
        if left[0] <= right[0]:
            merged.append(left.pop(0))
        else:
            merged.append(right.pop(0))

    if len(left) > 0:
        merged += left
    else:
        merged += right

    debug_print(merged=merged)
    return merged


if __name__ == "__main__":
    input_str = input("Enter numbers, separated by ',': ")

@@ -23,3 +57,6 @@ if __name__ == "__main__":
            quit(1)

    debug_print(value_list=value_list)

    sorted_list = mergesort(value_list)
    print(sorted_list)