Parcourir la source

Comments

Added comments to Heap Sort Implementation
PabloPuig1 il y a 2 ans
Parent
révision
eb05d59c6e
1 fichiers modifiés avec 12 ajouts et 5 suppressions
  1. 12
    5
      sorting.py

+ 12
- 5
sorting.py Voir le fichier

@@ -14,11 +14,15 @@ def mergeSort(lista):
14 14
 	#definan el algoritmo de ordenamiento mergesort
15 15
 	return lista
16 16
 
17
+#Esta es la implementación de Heap sort de Geeksforgeeks
18
+#https://www.geeksforgeeks.org/heap-sort/
17 19
 def heapSort(lista):
18 20
 	#definan el algoritmo de ordenamiento heapsort
19 21
 	n = len(lista)
22
+	#Se hace el maxheap
20 23
 	for i in range(n // 2 - 1, -1, -1):
21 24
 		heapify(lista, n, i)
25
+	#Se extraen elementos uno a uno
22 26
 	for i in range(n - 1, 0, -1):
23 27
 		(lista[i], lista[0]) = (lista[0], lista[i])
24 28
 		heapify(lista, i, 0)
@@ -33,16 +37,19 @@ def shellSort(lista):
33 37
 	return lista
34 38
 
35 39
 def heapify(lista, n, i):
36
-	largest = i
37
-	l = 2 * i * 1
38
-	r = 2 * i + 2
39
-
40
+	largest = i		#largest = raíz
41
+	l = 2 * i * 1	#left
42
+	r = 2 * i + 2	#right
43
+	#Ver is existe una rama isquierda y si es mayor a la raíz
40 44
 	if l < n and lista[i] < lista[l]:
41 45
 		largest = l
46
+	#Ver is existe una rama derecha y si es mayor a la raíz
42 47
 	if r < n and lista[largest] < lista[r]:
43 48
 		largest = r
49
+	#Se cambia la raíz si fuese necesario
44 50
 	if largest != i:
45
-		(lista[i], lista[largest]) = (lista[largest], lista[i])
51
+		(lista[i], lista[largest]) = (lista[largest], lista[i])		#swap
52
+		#Se llama heapify en la raíz nueva
46 53
 		heapify(lista, n, largest)
47 54
 
48 55
 maxValor=1000 	#define el valor maximo de los elementos de la lista