Bez popisu

qsortUtils.py 1.3KB

12345678910111213141516171819202122232425
  1. # Función partition: Selecciona el pivote y divide la lista en dos conjuntos: Elementos menores o iguales al pivote y elementos mayores al pivote
  2. def partition(A, p, r):
  3. x = A[r] # Selección del último elemento en la lista como el pivote
  4. i = p - 1 # El conjunto de elementos menores o iguales al pivote está inicialmente vacío
  5. for j in range (p, r):
  6. if A[j] <= x: # Comparación de elemento en la lista con el pivote
  7. 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.
  8. A[j], A[i] = A[i], A[j] #Swap A[j] con A[i]
  9. A[i+1], A[r] = A[r], A[i+1] # Colocar el pivote como último elemento del conjunto de menores o iguales
  10. return i + 1 # Devuelve el índice del pivote actual
  11. # Función qSort: Aplica el algoritmo de Quicksort a una lista
  12. def qSort(A, p, r):
  13. if p < r: # Caso Base: Se llegó a un elemento individual. La lista es un solo elemento
  14. q = partition(A, p, r) # Divide/Combine: Particiona la lista y se obtiene el índice del pivote
  15. qSort(A, p, q - 1) # Conquer: Se aplica qSort al conjunto de elementos menores o iguales al pivote actual
  16. qSort(A, q + 1, r) # Conquer: Se aplica qSort al conjunto de elementos mayores al pivote actual