Browse Source

Update sorting.py by adding heap sort's code

luislopez66 2 years ago
parent
commit
1c110fa36b
1 changed files with 20 additions and 0 deletions
  1. 20
    0
      sorting.py

+ 20
- 0
sorting.py View File

@@ -8,6 +8,7 @@ Al final se imprimen los promedios de cada algortimo
8 8
 """
9 9
 from random import randint
10 10
 import time
11
+import heapq
11 12
 
12 13
 def mergeSort(lista):
13 14
 	#definan el algoritmo de ordenamiento mergesort
@@ -15,6 +16,25 @@ def mergeSort(lista):
15 16
 
16 17
 def heapSort(lista):
17 18
 	#definan el algoritmo de ordenamiento heapsort
19
+	heapq.heapify(lista)
20
+ 
21
+	# Se busca el tamaño de la lista
22
+	n = len(lista)
23
+ 
24
+	""" Se crea un heap máximo y el último padre estará en
25
+		la posición h1, i.e., la mitad del tamaño de la lista.
26
+		Por lo tanto, ese sería el comienzo. 
27
+	"""
28
+	h1 = (n // 2) - 1
29
+	for i in range(h1, -1, -1):
30
+		heapq.heapify(lista[i])
31
+  
32
+	# Se extrae los elementos uno a uno
33
+	for i in range(n-1, 0, -1):
34
+		# Se intercambia, luego se hace heapify
35
+		lista[i], lista[0] = lista[0], lista[i]
36
+		heapq.heapify(lista[i])
37
+  
18 38
 	return lista
19 39
 
20 40
 def quickSort(lista):