Is my implementation of quicksort efficient, in-place, pythonic, and portable? def quicksort(array, lo, hi): if hi-lo < 2: return key = random.randrange(lo, hi) array[key], array[lo] = array[lo], array[key] y = 1 + lo for x in xrange(lo+1, hi): if array[x] <= array[lo]: array[x], array[y] = array[y], array[x] y += 1 array[lo], array[y-1] = array[y-1], array[lo] quicksort(array, lo, y-1) quicksort(array, y, hi) a = map(int, raw_input().split()) quicksort(a, 0, len(a))