Is my implementation of quicksort efficient, in-place, pythonic ?
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))