Procházet zdrojové kódy

1st Commit de quicksort

Luis Jusino před 3 roky
rodič
revize
6f1c551ed8
1 změnil soubory, kde provedl 36 přidání a 1 odebrání
  1. 36
    1
      sorting.py

+ 36
- 1
sorting.py Zobrazit soubor

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