def qsort2(array):
try:
array,pI = partition(array)
return qsort2(array[:pI])+[array[pI]]+qsort2(array[pI+1:])
except:
return array
def partition(array):
print("before: ",array)
if len(array) > 1:
pivot = array[0]
pivIndex = 0
i,j = 1,1
while j < len(array) - 1:
if array[j] < pivot:
temp = array[i]
array[i] = array[j]
array[j] = temp
i += 1
j += 1
temp = array[i-1]
array[i-1] = array[pivIndex]
array[pivIndex] = temp
pivIndex = i-1
print("after",array)
return array,pivIndex
else:
print("after",array)
return array
print([3,8,2,5,1,4,7,6])
print(qsort2([3,8,2,5,1,4,7,6]))