123456789101112131415161718192021222324 |
- # Función partition: Selecciona el pivote y divide la lista en dos conjuntos: Elementos menores o iguales al pivote y elementos mayores al pivote
- def partition(lista, p, r):
-
- x = lista[r] # Selección del último elemento en la lista como el pivote
- i = p - 1 # El conjunto de elementos menores o iguales al pivote está inicialmente vacío
-
- for j in range (p, r):
-
- if lista[j] <= x: # Comparación de elemento en la lista con el pivote
- i += 1 # Hacer espacio para el elemento A[j], se coloca un espacio luego del último elemento del conjunto de elementos menores o iguales al pivote.
- lista[j], lista[i] = lista[i], lista[j] #Swap A[j] con A[i]
-
- lista[i+1], lista[r] = lista[r], lista[i+1] # Colocar el pivote como último elemento del conjunto de menores o iguales
-
- return i + 1 # Devuelve el índice del pivote actual
-
- # Función qSort: Aplica el algoritmo de Quicksort a una lista
- def qSort(lista, p, r):
-
- if p < r: # Caso Base: Se llegó a un elemento individual. La lista es un solo elemento
- q = partition(lista, p, r) # Divide/Combine: Particiona la lista y se obtiene el índice del pivote
- qSort(lista, p, q - 1) # Conquer: Se aplica qSort al conjunto de elementos menores o iguales al pivote actual
- qSort(lista, q + 1, r) # Conquer: Se aplica qSort al conjunto de elementos mayores al pivote actual
-
|