Pārlūkot izejas kodu

Update sorting.py by adding heap sort's code

luislopez66 2 gadus atpakaļ
vecāks
revīzija
1c110fa36b
1 mainītis faili ar 20 papildinājumiem un 0 dzēšanām
  1. 20
    0
      sorting.py

+ 20
- 0
sorting.py Parādīt failu

8
 """
8
 """
9
 from random import randint
9
 from random import randint
10
 import time
10
 import time
11
+import heapq
11
 
12
 
12
 def mergeSort(lista):
13
 def mergeSort(lista):
13
 	#definan el algoritmo de ordenamiento mergesort
14
 	#definan el algoritmo de ordenamiento mergesort
15
 
16
 
16
 def heapSort(lista):
17
 def heapSort(lista):
17
 	#definan el algoritmo de ordenamiento heapsort
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
 	return lista
38
 	return lista
19
 
39
 
20
 def quickSort(lista):
40
 def quickSort(lista):