Browse Source

1st Commit de quicksort

Luis Jusino 3 years ago
parent
commit
6f1c551ed8
1 changed files with 36 additions and 1 deletions
  1. 36
    1
      sorting.py

+ 36
- 1
sorting.py View File

46
 def heapSort(listaHeap):
46
 def heapSort(listaHeap):
47
 	#definan el algoritmo de ordenamiento heapsort
47
 	#definan el algoritmo de ordenamiento heapsort
48
 
48
 
49
+
49
 	for i in range(len(listaHeap) / 2, -1, -1):
50
 	for i in range(len(listaHeap) / 2, -1, -1):
50
 		heapify(listaHeap, len(listaHeap), i)
51
 		heapify(listaHeap, len(listaHeap), i)
51
 
52
 
54
 		heapify(listaHeap, i, 0)
55
 		heapify(listaHeap, i, 0)
55
 	return listaHeap
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
 def quickSort(lista):
62
 def quickSort(lista):
58
 	#definan el algoritmo de ordenamiento quicksort
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
 def shellSort(lista):
81
 def shellSort(lista):
62
 	#definan el algoritmo de ordenamiento shellsort
82
 	#definan el algoritmo de ordenamiento shellsort
88
 	heapSort(listaHeap)				#ejecutamos el algoritmo heapSort
108
 	heapSort(listaHeap)				#ejecutamos el algoritmo heapSort
89
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
109
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
90
 
110
 
111
+
91
 	t1 = time.clock()				#seteamos el tiempo al empezar
112
 	t1 = time.clock()				#seteamos el tiempo al empezar
92
 	quickSort(listaQuick)			#ejecutamos el algoritmo quickSort
113
 	quickSort(listaQuick)			#ejecutamos el algoritmo quickSort
93
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
114
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
96
 	shellSort(listaShell)			#ejecutamos el algoritmo shellSort
117
 	shellSort(listaShell)			#ejecutamos el algoritmo shellSort
97
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
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
 #imprimos los resultados
129
 #imprimos los resultados
100
 print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
130
 print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
101
 print "MergeSort " + str(acumulaMerge/veces) + " segundos"
131
 print "MergeSort " + str(acumulaMerge/veces) + " segundos"
102
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
132
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
103
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
133
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
104
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
134
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
135
+
136
+
137
+#Referencia:
138
+#https://stackoverflow.com/questions/18262306/quicksort-with-python
139
+