Browse Source

shellsort code added

Luis Ortiz 1 year ago
parent
commit
2f2553e69b
1 changed files with 20 additions and 6 deletions
  1. 20
    6
      sorting.py

+ 20
- 6
sorting.py View File

@@ -3,7 +3,7 @@ Carlos J Corrada Bravo
3 3
 Este programa calcula el promedio de tiempo de ejecucion de cuatro algoritmos de ordenamiento
4 4
 La variable maxValor define el valor maximo de los elementos de la lista
5 5
 La variable largoLista define el largo de las listas a ordenar
6
-La variable veces define las veces que se va a hacer el ordenamiento 
6
+La variable veces define las veces que se va a hacer el ordenamiento
7 7
 Al final se imprimen los promedios de cada algortimo
8 8
 """
9 9
 from random import randint
@@ -23,11 +23,26 @@ def quickSort(lista):
23 23
 
24 24
 def shellSort(lista):
25 25
 	#definan el algoritmo de ordenamiento shellsort
26
+	x = len(lista)
27
+	distance = x / 2
28
+
29
+	while distance > 0:
30
+		for i in range(distance, x):
31
+			tmp = lista[i]
32
+			j = i
33
+
34
+			while j >= distance and lista[j - distance] > tmp:
35
+				lista[j] = lista[j - distance]
36
+				j -= distance
37
+
38
+			lista[j] = tmp
39
+		distance /= 2
40
+
26 41
 	return lista
27 42
 
28 43
 maxValor=1000 	#define el valor maximo de los elementos de la lista
29 44
 largoLista=1000 #define el largo de las listas a ordenar
30
-veces=100 		#define las veces que se va a hacer el ordenamiento 
45
+veces=100 		#define las veces que se va a hacer el ordenamiento
31 46
 
32 47
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
33 48
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
@@ -43,15 +58,15 @@ for i in range(veces):
43 58
 	t1 = time.clock() 				#seteamos el tiempo al empezar
44 59
 	mergeSort(mergelista) 				#ejecutamos el algoritmo mergeSort
45 60
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
46
-	
61
+
47 62
 	t1 = time.clock()				#seteamos el tiempo al empezar
48 63
 	heapSort(heaplista)					#ejecutamos el algoritmo heapSort
49 64
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
50
-	
65
+
51 66
 	t1 = time.clock()				#seteamos el tiempo al empezar
52 67
 	quickSort(quicklista)				#ejecutamos el algoritmo quickSort
53 68
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
54
-	
69
+
55 70
 	t1 = time.clock()				#seteamos el tiempo al empezar
56 71
 	shellSort(searchlista)				#ejecutamos el algoritmo shellSort
57 72
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
@@ -62,4 +77,3 @@ print "MergeSort " + str(acumulaMerge/veces) + " segundos"
62 77
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
63 78
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
64 79
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
65
-