Browse Source

Adding HeapSort implementation

dylan.cedres 1 year ago
parent
commit
d9ec496f93
1 changed files with 31 additions and 0 deletions
  1. 31
    0
      sorting.py

+ 31
- 0
sorting.py View File

@@ -16,10 +16,41 @@ def mergeSort(lista):
16 16
 
17 17
 def heapSort(lista):
18 18
 	#definan el algoritmo de ordenamiento heapsort
19
+	# Dylan A. Cedres Rivera
20
+
21
+	# Nuevo heap para insertar los elementos de lista creada con numeros aleatorios
22
+	myHeap = []
23
+	heapify(myHeap)
24
+
25
+	# Se copian los elementos de lista al heap y se ordenan de menor a mayor los elementos con cada push.
26
+	# Todos los elementos se les asigna un signo contrario al que tienen, para poder crear un MaxHeap, de manera
27
+	# 	que los numeros mas grandes se convierten en los mas pequenos.
28
+	# Si se quiere hacer un MinHeap, la instruccion de multiplicar por -1 no es neceseria 
29
+	for element in lista:
30
+		heappush(myHeap, -1 * element)
31
+
32
+	# print("lista antes de 'heapificar'", lista)
33
+
34
+
35
+	# Este loop se utiliza para crear un MaxHeap, de manera que le devuelve el signo original que tenian los 
36
+	#	elementos antes de que se anadieran al heap.
37
+	# Esto significa que los elementos mas pequenos, se convierten en los mas grandes, dejando la forma de un MaxHeap,
38
+	#	con el numero mas grande quedando como el nodo padre del arbol binario.
39
+	# Si se quiere hacer un MinHeap, este loop no se necesita. 
40
+	for i in range(len(myHeap)):
41
+		myHeap[i] = myHeap[i] * -1
42
+
43
+	# print("lista 'heapificada'", myHeap)
44
+	
45
+	# Copia los elementos del heap ordenado de vuelta a la lista inicialmente generada y la devuelve
46
+	lista = myHeap
47
+	return lista
48
+
19 49
 	return lista
20 50
 
21 51
 def quickSort(lista):
22 52
 	#definan el algoritmo de ordenamiento quicksort
53
+	
23 54
 	return lista
24 55
 
25 56
 def shellSort(lista):