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