|
@@ -1,5 +1,6 @@
|
|
1
|
+# -*- coding: utf-8 -*-
|
1
|
2
|
"""
|
2
|
|
-iiiiCarlos J Corrada Bravo
|
|
3
|
+Carlos J Corrada Bravo
|
3
|
4
|
Este programa calcula el promedio de tiempo de ejecución de cuatro algoritmos de ordenamiento
|
4
|
5
|
La variable maxValor define el valor maximo de los elementos de la lista
|
5
|
6
|
La variable largoLista define el largo de las listas a ordenar
|
|
@@ -78,8 +79,29 @@ def heapSort(lista):
|
78
|
79
|
return lista
|
79
|
80
|
|
80
|
81
|
def quickSort(lista):
|
81
|
|
- #definan el algoritmo de ordenamiento quicksort
|
82
|
|
- return lista
|
|
82
|
+ #Establecemos los arreglos para guardar las particiones
|
|
83
|
+ less = []
|
|
84
|
+ equal = []
|
|
85
|
+ greater = []
|
|
86
|
+
|
|
87
|
+ #Empezamos a iterar el arreglo y ver si los elementos son
|
|
88
|
+ #menores, mayores o iguales que un pivot.
|
|
89
|
+ if len(lista) > 1:
|
|
90
|
+ pivot = lista[0]
|
|
91
|
+ for x in lista:
|
|
92
|
+ if x < pivot:
|
|
93
|
+ less.append(x)
|
|
94
|
+ elif x == pivot:
|
|
95
|
+ equal.append(x)
|
|
96
|
+ elif x > pivot:
|
|
97
|
+ greater.append(x)
|
|
98
|
+
|
|
99
|
+ #Hacemos una llamada recursiva para seguir ordenando
|
|
100
|
+ #las diferentes partes del arreglo. Despues a lo ultimo
|
|
101
|
+ #juntamos todas las partes ordenadas.
|
|
102
|
+ return quickSort(less)+equal+quickSort(greater)
|
|
103
|
+ else:
|
|
104
|
+ return lista
|
83
|
105
|
|
84
|
106
|
def shellSort(lista):
|
85
|
107
|
#definan el algoritmo de ordenamiento shellsort
|
|
@@ -118,6 +140,38 @@ acumulaQuick=0 #variable para acumular el tiempo de ejecucion del quicksort
|
118
|
140
|
acumulaShell=0 #variable para acumular el tiempo de ejecucion del shellsort
|
119
|
141
|
|
120
|
142
|
for i in range(veces):
|
|
143
|
+<<<<<<< HEAD
|
|
144
|
+ lista = [randint(0,maxValor) for r in range(largoLista)] #creamos una lista con valores al azar
|
|
145
|
+
|
|
146
|
+ # creamos copias de la lista para cada algoritmo
|
|
147
|
+ listaMerge = lista[:]
|
|
148
|
+ listaHeap = lista[:]
|
|
149
|
+ listaQuick = lista[:]
|
|
150
|
+ listaShell = lista[:]
|
|
151
|
+
|
|
152
|
+ t1 = time.clock() #seteamos el tiempo al empezar
|
|
153
|
+ mergeSort(listaMerge) #ejecutamos el algoritmo mergeSort
|
|
154
|
+ acumulaMerge+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
|
155
|
+
|
|
156
|
+ t1 = time.clock() #seteamos el tiempo al empezar
|
|
157
|
+ heapSort(listaHeap) #ejecutamos el algoritmo heapSort
|
|
158
|
+ acumulaHeap+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
|
159
|
+
|
|
160
|
+ t1 = time.clock() #seteamos el tiempo al empezar
|
|
161
|
+ quickSort(listaQuick) #ejecutamos el algoritmo quickSort
|
|
162
|
+ acumulaQuick+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
|
163
|
+
|
|
164
|
+ t1 = time.clock() #seteamos el tiempo al empezar
|
|
165
|
+ shellSort(listaShell) #ejecutamos el algoritmo shellSort
|
|
166
|
+ acumulaShell+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
|
167
|
+
|
|
168
|
+#imprimos los resultados
|
|
169
|
+print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
|
|
170
|
+print "MergeSort " + str(acumulaMerge/veces) + " segundos"
|
|
171
|
+print "HeapSort " + str(acumulaHeap/veces) + " segundos"
|
|
172
|
+print "QuickSort " + str(acumulaQuick/veces) + " segundos"
|
|
173
|
+print "ShellSort " + str(acumulaShell/veces) + " segundos"
|
|
174
|
+=======
|
121
|
175
|
lista = [randint(0,maxValor) for r in range(largoLista)] #creamos una lista con valores al azar
|
122
|
176
|
|
123
|
177
|
t1 = time.clock() #seteamos el tiempo al empezar
|
|
@@ -143,3 +197,4 @@ print ("HeapSort " + str(acumulaHeap/veces) + " segundos")
|
143
|
197
|
print ("QuickSort " + str(acumulaQuick/veces) + " segundos")
|
144
|
198
|
print ("ShellSort " + str(acumulaShell/veces) + " segundos")
|
145
|
199
|
|
|
200
|
+>>>>>>> ae9a1771cc651ae782615bb83aee73d658f88b39
|