def intercambiar(lista, i, j):
lista[i], lista[j] = lista[j], lista[i]
def pivote(lista, ini, fin):
p = lista[ini] # Elegimos el pivote como el primer elemento
k = ini + 1
b = fin
while True:
while k <= fin and lista[k] < p: # Buscamos un elemento mayor que el
pivote
k += 1
while lista[b] > p: # Buscamos un elemento menor que el pivote
b -= 1
if k >= b: # Si ambos índices se cruzan, terminamos
break
intercambiar(lista, k, b) # Intercambiamos elementos
intercambiar(lista, ini, b) # Colocamos el pivote en su lugar
return lista, b
def quickSort(lista, ini, fin):
if ini < fin:
lista, b = pivote(lista, ini, fin)
quickSort(lista, ini, b - 1) # Ordenamos la parte izquierda
quickSort(lista, b + 1, fin) # Ordenamos la parte derecha
return lista
# Prueba del algoritmo
lista = [7, 6, 2, 3, 4, 65, 8, 64, 74, 5, 88]
print("Array desordenado: ", lista)
ini = 0
fin = len(lista) - 1
lista = quickSort(lista, ini, fin)
print("Array ordenado:", lista)