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