i had implement quicksort algorithm homework in language of choice , chose python. during lectures, we've been told quicksort memory efficient because works in-place; i.e., has no additional copies of parts of input array recursions. with in mind, tried implement quicksort algorithm in python, shortly afterwards realized in order write elegant piece of code have pass parts of array function while recursing. since python creates new lists each time this, have tried using python3 (because supports nonlocal keyword). following commented code. def quicksort2(array): # create local copy of array. arr = array def sort(start, end): # base case condition if not start < end: return # make known inner function work on arr # outer definition nonlocal arr = start + 1 j = start + 1 # choosing pivot first element of working part # part of arr pivot = arr[start] # start partit...