import random def partition(l, first, last): r = random.randint(first, last) l[first], l[r] = l[r], l[first] pivot = l[first] j = first + 1 for k in range(first + 1, last + 1): if l[k] < pivot: j = j + 1 l[k], l[j-1] = l[j-1], l[k] l[first], l[j-1] = l[j-1], l[first] return j-1 def quick_sort(l, first, last): if first >= last: return p = partition(l, first, last) #ordenar a primeira parte l[first:p-1] quick_sort(l, first, p-1) #ordenar a segunda parte l[p+1:last] quick_sort(l, p+1, last) return l = [5, 2, 3, 1, 4] quick_sort(l, 0, len(l)-1) print(l)