|
@@ -23,6 +23,29 @@ def quickSort(lista):
|
23
|
23
|
|
24
|
24
|
def shellSort(lista):
|
25
|
25
|
#definan el algoritmo de ordenamiento shellsort
|
|
26
|
+
|
|
27
|
+ #El algoritmo compara elementos de una lista
|
|
28
|
+ #que tienen una distancia fija entre ellos, la
|
|
29
|
+ #differencia en distancia se minimiza por cada
|
|
30
|
+ #iterazion del algoritmo
|
|
31
|
+
|
|
32
|
+ num = int(len(lista))
|
|
33
|
+ dif = int(num/2)
|
|
34
|
+
|
|
35
|
+ while dif > 0:
|
|
36
|
+ for i in range(int(dif),int(num)):
|
|
37
|
+ a = lista[i]
|
|
38
|
+ j = i
|
|
39
|
+
|
|
40
|
+ #por cada intervalo se reorganizara los elementos
|
|
41
|
+ #si se cumple la declaracion dentro del while loop
|
|
42
|
+ while j >= dif and lista[int(j - dif)] > a:
|
|
43
|
+ lista[int(j)] = lista[int(j - dif)]
|
|
44
|
+ j -= dif
|
|
45
|
+
|
|
46
|
+ lista[int(j)] = a
|
|
47
|
+ dif/= 2
|
|
48
|
+
|
26
|
49
|
return lista
|
27
|
50
|
|
28
|
51
|
maxValor=1000 #define el valor maximo de los elementos de la lista
|
|
@@ -54,9 +77,9 @@ for i in range(veces):
|
54
|
77
|
acumulaShell+=time.clock()-t1 #acumulamos el tiempo de ejecucion
|
55
|
78
|
|
56
|
79
|
#imprimos los resultados
|
57
|
|
-print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
|
58
|
|
-print "MergeSort " + str(acumulaMerge/veces) + " segundos"
|
59
|
|
-print "HeapSort " + str(acumulaHeap/veces) + " segundos"
|
60
|
|
-print "QuickSort " + str(acumulaQuick/veces) + " segundos"
|
61
|
|
-print "ShellSort " + str(acumulaShell/veces) + " segundos"
|
|
80
|
+#print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
|
|
81
|
+#print "MergeSort " + str(acumulaMerge/veces) + " segundos"
|
|
82
|
+#print "HeapSort " + str(acumulaHeap/veces) + " segundos"
|
|
83
|
+#print "QuickSort " + str(acumulaQuick/veces) + " segundos"
|
|
84
|
+print("ShellSort " + str(acumulaShell/veces) + " segundos")
|
62
|
85
|
|