Luis Ortiz 1 rok temu
rodzic
commit
fff3694ec5
1 zmienionych plików z 72 dodań i 5 usunięć
  1. 72
    5
      sorting.py

+ 72
- 5
sorting.py Wyświetl plik

@@ -6,7 +6,11 @@ La variable largoLista define el largo de las listas a ordenar
6 6
 La variable veces define las veces que se va a hacer el ordenamiento
7 7
 Al final se imprimen los promedios de cada algortimo
8 8
 """
9
+
9 10
 from heapq import merge
11
+
12
+from lib2to3.pgen2.token import LESS
13
+
10 14
 from random import randint
11 15
 import time
12 16
 
@@ -14,7 +18,7 @@ import time
14 18
 def mergeSort(lista):
15 19
 	#definan el algoritmo de ordenamiento mergesort
16 20
 	# Carla Ramos Bezares
17
-	# Para realizar este código leí las explicaciones e implementaciones que ofrecen
21
+	# Para realizar este codigo lei las explicaciones e implementaciones que ofrecen
18 22
 	# GeeksforGeeks y Progamiz
19 23
 
20 24
 	# check if the array has more than one element
@@ -23,7 +27,7 @@ def mergeSort(lista):
23 27
         middle = len(lista)//2
24 28
         leftHalf = lista[:middle]
25 29
         rightHalf = lista[middle:]
26
-        
30
+
27 31
         mergeSort(leftHalf)
28 32
         mergeSort(rightHalf)
29 33
         # declare pointers
@@ -40,7 +44,7 @@ def mergeSort(lista):
40 44
             else:
41 45
                 lista[k] = rightHalf[j]
42 46
                 j = j + 1
43
-           
47
+
44 48
             k = k + 1
45 49
 
46 50
         # continue updating array grabbing any elements that were left
@@ -58,11 +62,74 @@ def mergeSort(lista):
58 62
 
59 63
 def heapSort(lista):
60 64
 	#definan el algoritmo de ordenamiento heapsort
61
-	return lista
65
+    #Andrea V. Nieves
66
+
67
+
68
+    #function def
69
+    def heapify(lista, n, i):
70
+       biggest = i
71
+       left = 2*i + 1
72
+       right = 2*i + 2
73
+
74
+
75
+       if left < n and lista[left] > lista[i]:
76
+           biggest = left
77
+       else:
78
+            biggest = i
79
+
80
+       if right< n and lista[right] > lista[biggest]:
81
+           biggest = right
82
+
83
+       if biggest != i:
84
+           lista[i], lista[biggest] = lista[biggest], lista[i]
85
+           heapify(lista,n,biggest)
86
+
87
+
88
+
89
+
90
+       #actual call
91
+    n = len(lista)
92
+
93
+    for i in range(n // 2 - 1, -1, -1):
94
+        heapify(lista, n, i)
95
+
96
+    for i in range(n - 1, 0, -1):
97
+        lista[i], lista[0] = lista[0], lista[i]
98
+        heapify(lista, i, 0)
99
+
100
+
101
+    return lista
62 102
 
63 103
 def quickSort(lista):
64 104
 	#definan el algoritmo de ordenamiento quicksort
65
-	return lista
105
+    #Juan F. Hernandez
106
+    # Para este codigo se utilizo referencia de stackoverflow
107
+
108
+    #define arreglos a utilizar
109
+
110
+	lowerArray = []
111
+	equalArray = []
112
+	maxArray = []
113
+
114
+
115
+    #organiza los elementos utilizando el pivote para ponerlos en orden
116
+
117
+	if len(lista) > 1:
118
+		pivot = lista[0]
119
+		for x in lista:
120
+			if x < pivot:
121
+				lowerArray.append(x)
122
+			elif x == pivot:
123
+				equalArray.append(x)
124
+			elif x > pivot:
125
+				maxArray.append(x)
126
+
127
+        #concatena arreglos en orden
128
+
129
+		return quickSort(lowerArray)+equalArray+quickSort(maxArray)
130
+
131
+	else:
132
+		return lista
66 133
 
67 134
 def shellSort(lista):
68 135
 	#definan el algoritmo de ordenamiento shellsort