(arr, simulation=False)
return arr
Quick sort
        Complexity: best O(n log(n)) avg O(n log(n)), worst O(N^2)
Quick sort
        Complexity: best O(n log(n)) avg O(n log(n)), worst O(N^2)
Quick sort Complexity : best O ( n log ( n )) avg O ( n log ( n )) worst O ( N^2 )
def quick_sort(arr, simulation=False):
    """ Quick sort
        Complexity: best O(n log(n)) avg O(n log(n)), worst O(N^2)
    """
    
    iteration = 0
    if simulation:
        print("iteration",iteration,":",*arr)
    arr, _ = quick_sort_recur(arr, 0, len(arr) - 1, iteration, simulation)
    return arr
def quick_sort ( arr , simulation = False ) : iteration = 0 if simulation : print ( "iteration" , iteration , ":" , * arr ) arr , _ = quick_sort_recur ( arr , 0 , len ( arr ) - 1 , iteration , simulation ) return arr