|
@@ -83,6 +83,29 @@ def quickSort(lista):
|
83
|
83
|
|
84
|
84
|
def shellSort(lista):
|
85
|
85
|
#definan el algoritmo de ordenamiento shellsort
|
|
86
|
+
|
|
87
|
+ #El algoritmo compara elementos de una lista
|
|
88
|
+ #que tienen una distancia fija entre ellos, la
|
|
89
|
+ #differencia en distancia se minimiza por cada
|
|
90
|
+ #iterazion del algoritmo
|
|
91
|
+
|
|
92
|
+ num = int(len(lista))
|
|
93
|
+ dif = int(num/2)
|
|
94
|
+
|
|
95
|
+ while dif > 0:
|
|
96
|
+ for i in range(int(dif),int(num)):
|
|
97
|
+ a = lista[i]
|
|
98
|
+ j = i
|
|
99
|
+
|
|
100
|
+ #por cada intervalo se reorganizara los elementos
|
|
101
|
+ #si se cumple la declaracion dentro del while loop
|
|
102
|
+ while j >= dif and lista[int(j - dif)] > a:
|
|
103
|
+ lista[int(j)] = lista[int(j - dif)]
|
|
104
|
+ j -= dif
|
|
105
|
+
|
|
106
|
+ lista[int(j)] = a
|
|
107
|
+ dif/= 2
|
|
108
|
+
|
86
|
109
|
return lista
|
87
|
110
|
|
88
|
111
|
maxValor=1000 #define el valor maximo de los elementos de la lista
|
|
@@ -114,9 +137,9 @@ for i in range(veces):
|
114
|
137
|
acumulaShell+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
115
|
138
|
|
116
|
139
|
#imprimos los resultados
|
117
|
|
-print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
|
118
|
|
-print "MergeSort " + str(acumulaMerge/veces) + " segundos"
|
119
|
|
-print "HeapSort " + str(acumulaHeap/veces) + " segundos"
|
120
|
|
-print "QuickSort " + str(acumulaQuick/veces) + " segundos"
|
121
|
|
-print "ShellSort " + str(acumulaShell/veces) + " segundos"
|
|
140
|
+print ("Promedio de tiempo de ejecucion de " + str(veces) + " listas de largo " + str(largoLista))
|
|
141
|
+print ("MergeSort " + str(acumulaMerge/veces) + " segundos")
|
|
142
|
+print ("HeapSort " + str(acumulaHeap/veces) + " segundos")
|
|
143
|
+print ("QuickSort " + str(acumulaQuick/veces) + " segundos")
|
|
144
|
+print ("ShellSort " + str(acumulaShell/veces) + " segundos")
|
122
|
145
|
|