def qsort2(array): array,pI = partition(array) return partition(array[:pI])[0]+[array[pI]]+partition(array[pI+1:])[0] def partition(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 return array,pivIndex else: return array print([3,8,2,5,1,4,7,6]) print(qsort2([3,8,2,5,1,4,7,6]))