Quick Sort implementation in python Implemented the quick sort algorithm in python, It was just for learning it, now I want to port it to C.

Thoughts on the quality of my python implementation?

from random import randint, shuffle

def swap(array, a, b):
    array[a], array[b] = array[b], array[a]


def quick_sort(array, start=0, end=None):
    if end is None:
        end = len(array) - 1

    if end - start &gt;= 1:
        pivot = array[end]
        a = start
        b = end - 1
        while not a &gt; b:
            if not array[a] &gt; pivot:
                a += 1
                continue
            else:
                if array[b] &lt; pivot:
                    swap(array, a, b)
                    a += 1
                b -= 1
        swap(array, a, end)
        quick_sort(array, start, a - 1)
        quick_sort(array, a + 1, end)


arr = [randint(0, 30) for _ in range(20)]
print(arr)
quick_sort(arr)
print(arr)
Magic Numbers

arr = [randint(0, 30) for _ in range(20)]


What are 0, 30, and 20 supposed to represent? I would assign these to variables to make it more clear

Type Hints

This

def swap(array, a, b):


can be this

def swap(array: list, a: int, b: int) -&gt; None:


These allow you to show what types of parameters are accepted, and what types are returned from the functions.

Main Guard

This

arr = [randint(0, 30) for _ in range(20)]
print(arr)
quick_sort(arr)
print(arr)


should be put in a main guard, like so

if __name__ == '__main__':
    arr = [randint(0, 30) for _ in range(20)]
    print(arr)
    quick_sort(arr)
    print(arr)


This prevents this code from running if you decide to import this module from another module/program.