Parcourir la source

added shellsort to sortingFinal

Edward Garcia Lopez il y a 2 ans
Parent
révision
a70b403ba6
2 fichiers modifiés avec 21 ajouts et 9 suppressions
  1. 1
    2
      README.md
  2. 20
    7
      sorting.py

+ 1
- 2
README.md Voir le fichier

@@ -1,2 +1 @@
1
-Este es el README del grupo 4. Este conisiste de Andrel, Edward, Michael y Jasiel.
2
-Este README es dentro del nuevo branch "sortingAndrel".
1
+Este es el README del grupo 4. Este consiste de Andrel, Edward, Michael y Jasiel.

+ 20
- 7
sorting.py Voir le fichier

@@ -6,7 +6,6 @@ La variable largoLista define el largo de las listas a ordenar
6 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
-
10 9
 from random import randint
11 10
 import time
12 11
 
@@ -81,11 +80,25 @@ def heapSort(lista):
81 80
 	return lista
82 81
 
83 82
 def quickSort(lista):
84
-	#definan el algoritmo de ordenamiento quicksort
83
+	# definan el algoritmo de ordenamiento quicksort
85 84
 	return lista
86 85
 
87 86
 def shellSort(lista):
88
-	#definan el algoritmo de ordenamiento shellsort
87
+	# definan el algoritmo de ordenamiento shellsort
88
+	div = len(lista) / 2
89
+	# verifica si no se puede dividir mas
90
+	while div != 0:
91
+	# dividir lista en sub listas
92
+		for j in range(div):
93
+			# hacer insertion sort en sub listas
94
+			for x in range(div + j, len(lista), div):
95
+				key = lista[x]
96
+				pos = x - div
97
+				while pos >= 0 and key < lista[pos]:
98
+					lista[pos + div] = lista[pos]
99
+					pos -= div
100
+				lista[pos + div] = key
101
+		div /= 2
89 102
 	return lista
90 103
 
91 104
 def heapify(lista, largo, raiz):
@@ -123,10 +136,10 @@ acumulaQuick=0 	#variable para acumular el tiempo de ejecucion del quicksort
123 136
 acumulaShell=0 	#variable para acumular el tiempo de ejecucion del shellsort
124 137
 
125 138
 for i in range(veces):
126
-	mergelista = [randint(0,maxValor) for r in range(largoLista)] #creamos una lista con valores al azar
127
-	heaplista=list(mergelista)
128
-	quicklista=list(mergelista)
129
-	searchlista=list(mergelista)
139
+	mergelista = [randint(0,maxValor) for r in range(largoLista)] # creamos una lista con valores al azar
140
+	heaplista = list(mergelista)
141
+	quicklista = list(mergelista)
142
+	searchlista = list(mergelista)
130 143
 
131 144
 	t1 = time.process_time() 				#seteamos el tiempo al empezar
132 145
 	mergeSort(mergelista) 				#ejecutamos el algoritmo mergeSort