|
@@ -46,6 +46,7 @@ def heapify(listaHeap, largoLista, i):
|
46
|
46
|
def heapSort(listaHeap):
|
47
|
47
|
#definan el algoritmo de ordenamiento heapsort
|
48
|
48
|
|
|
49
|
+
|
49
|
50
|
for i in range(len(listaHeap) / 2, -1, -1):
|
50
|
51
|
heapify(listaHeap, len(listaHeap), i)
|
51
|
52
|
|
|
@@ -54,9 +55,28 @@ def heapSort(listaHeap):
|
54
|
55
|
heapify(listaHeap, i, 0)
|
55
|
56
|
return listaHeap
|
56
|
57
|
|
|
58
|
+
|
|
59
|
+ return lista
|
|
60
|
+#Se le hace referencia y se le da credito al codigo que utilice de referencia
|
|
61
|
+
|
57
|
62
|
def quickSort(lista):
|
58
|
63
|
#definan el algoritmo de ordenamiento quicksort
|
59
|
|
- return lista
|
|
64
|
+ menor = []
|
|
65
|
+ igual = []
|
|
66
|
+ mayor = []
|
|
67
|
+
|
|
68
|
+ if len(lista) > 1:
|
|
69
|
+ pivot = lista[0]
|
|
70
|
+ for i in lista:
|
|
71
|
+ if i < pivot:
|
|
72
|
+ menor.append(i)
|
|
73
|
+ elif i == pivot:
|
|
74
|
+ igual.append(i)
|
|
75
|
+ else:
|
|
76
|
+ mayor.append(i)
|
|
77
|
+ return quickSort(menor)+igual+quickSort(mayor)
|
|
78
|
+ else:
|
|
79
|
+ return lista
|
60
|
80
|
|
61
|
81
|
def shellSort(lista):
|
62
|
82
|
#definan el algoritmo de ordenamiento shellsort
|
|
@@ -88,6 +108,7 @@ for i in range(veces):
|
88
|
108
|
heapSort(listaHeap) #ejecutamos el algoritmo heapSort
|
89
|
109
|
acumulaHeap+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
90
|
110
|
|
|
111
|
+
|
91
|
112
|
t1 = time.clock() #seteamos el tiempo al empezar
|
92
|
113
|
quickSort(listaQuick) #ejecutamos el algoritmo quickSort
|
93
|
114
|
acumulaQuick+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
|
@@ -96,9 +117,23 @@ for i in range(veces):
|
96
|
117
|
shellSort(listaShell) #ejecutamos el algoritmo shellSort
|
97
|
118
|
acumulaShell+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
98
|
119
|
|
|
120
|
+ t1 = time.clock() #seteamos el tiempo al empezar
|
|
121
|
+ quickSort(lista) #ejecutamos el algoritmo quickSort
|
|
122
|
+ acumulaQuick+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
|
123
|
+
|
|
124
|
+ t1 = time.clock() #seteamos el tiempo al empezar
|
|
125
|
+ shellSort(lista) #ejecutamos el algoritmo shellSort
|
|
126
|
+ acumulaShell+=time.clock()-t1 #acumulamos el tiempo de ejecucion"""
|
|
127
|
+
|
|
128
|
+
|
99
|
129
|
#imprimos los resultados
|
100
|
130
|
print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
|
101
|
131
|
print "MergeSort " + str(acumulaMerge/veces) + " segundos"
|
102
|
132
|
print "HeapSort " + str(acumulaHeap/veces) + " segundos"
|
103
|
133
|
print "QuickSort " + str(acumulaQuick/veces) + " segundos"
|
104
|
134
|
print "ShellSort " + str(acumulaShell/veces) + " segundos"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+#Referencia:
|
|
138
|
+#https://stackoverflow.com/questions/18262306/quicksort-with-python
|
|
139
|
+
|