3 Commits

Author SHA1 Message Date
  alejandro.alvarez5 ae9a1771cc sortingFinal 3 years ago
  alejandro.alvarez5 5822f4979c changes 3 years ago
  Alex-Alva0 7a8270e200 shell sort 3 years ago
1 changed files with 28 additions and 5 deletions
  1. 28
    5
      sorting.py

+ 28
- 5
sorting.py View File

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