Browse Source

ShellSort function code added

Alex Ortiz 1 year ago
parent
commit
ccdcae09c7
1 changed files with 18 additions and 6 deletions
  1. 18
    6
      sorting.py

+ 18
- 6
sorting.py View File

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