4 Commits

Autor SHA1 Mensaje Fecha
  diegoaperez 0e0c4dd304 Merge Diego hace 3 años
  diegoaperez 5262980166 Adding el cambio que el profe dijo. hace 3 años
  diegoaperez d9bf55303b Adding el cambio que el profe dijo. hace 3 años
  diegoaperez e17ac4d0fb Adding mi file de quickSort. hace 3 años
Se han modificado 1 ficheros con 58 adiciones y 3 borrados
  1. 58
    3
      sorting.py

+ 58
- 3
sorting.py Ver fichero

@@ -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