Browse Source

shell sort

Alex-Alva0 3 years ago
parent
commit
7a8270e200
1 changed files with 28 additions and 5 deletions
  1. 28
    5
      sorting.py

+ 28
- 5
sorting.py View File

23
 
23
 
24
 def shellSort(lista):
24
 def shellSort(lista):
25
 	#definan el algoritmo de ordenamiento shellsort
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
 	return lista
49
 	return lista
27
 
50
 
28
 maxValor=1000 	#define el valor maximo de los elementos de la lista
51
 maxValor=1000 	#define el valor maximo de los elementos de la lista
54
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
77
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
55
 
78
 
56
 #imprimos los resultados
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