Browse Source

Adding mi file de quickSort.

diegoaperez 3 years ago
parent
commit
e17ac4d0fb
1 changed files with 28 additions and 8 deletions
  1. 28
    8
      sorting.py

+ 28
- 8
sorting.py View File

3
 Este programa calcula el promedio de tiempo de ejecución de cuatro algoritmos de ordenamiento
3
 Este programa calcula el promedio de tiempo de ejecución 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
18
 	return lista
18
 	return lista
19
 
19
 
20
 def quickSort(lista):
20
 def quickSort(lista):
21
-	#definan el algoritmo de ordenamiento quicksort
22
-	return lista
21
+	#Establecemos los arreglos para guardar las particiones
22
+    less = []
23
+    equal = []
24
+    greater = []
25
+
26
+    #Empezamos a iterar el arreglo y ver si los elementos son
27
+    #menores, mayores o iguales que un pivot.
28
+    if len(lista) > 1:
29
+        pivot = lista[0]
30
+        for x in lista:
31
+            if x < pivot:
32
+                less.append(x)
33
+            elif x == pivot:
34
+                equal.append(x)
35
+            elif x > pivot:
36
+                greater.append(x)
37
+
38
+        #Hacemos una llamada recursiva para seguir ordenando
39
+        #las diferentes partes del arreglo. Despues a lo ultimo
40
+        #juntamos todas las partes ordenadas.
41
+        return quickSort(less)+equal+quickSort(greater)
42
+    else:
43
+        return lista
23
 
44
 
24
 def shellSort(lista):
45
 def shellSort(lista):
25
 	#definan el algoritmo de ordenamiento shellsort
46
 	#definan el algoritmo de ordenamiento shellsort
27
 
48
 
28
 maxValor=1000 	#define el valor maximo de los elementos de la lista
49
 maxValor=1000 	#define el valor maximo de los elementos de la lista
29
 largoLista=1000 #define el largo de las listas a ordenar
50
 largoLista=1000 #define el largo de las listas a ordenar
30
-veces=100 		#define las veces que se va a hacer el ordenamiento 
51
+veces=100 		#define las veces que se va a hacer el ordenamiento
31
 
52
 
32
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
53
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
33
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
54
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
40
 	t1 = time.clock() 				#seteamos el tiempo al empezar
61
 	t1 = time.clock() 				#seteamos el tiempo al empezar
41
 	mergeSort(lista) 				#ejecutamos el algoritmo mergeSort
62
 	mergeSort(lista) 				#ejecutamos el algoritmo mergeSort
42
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
63
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
43
-	
64
+
44
 	t1 = time.clock()				#seteamos el tiempo al empezar
65
 	t1 = time.clock()				#seteamos el tiempo al empezar
45
 	heapSort(lista)					#ejecutamos el algoritmo heapSort
66
 	heapSort(lista)					#ejecutamos el algoritmo heapSort
46
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
67
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
47
-	
68
+
48
 	t1 = time.clock()				#seteamos el tiempo al empezar
69
 	t1 = time.clock()				#seteamos el tiempo al empezar
49
 	quickSort(lista)				#ejecutamos el algoritmo quickSort
70
 	quickSort(lista)				#ejecutamos el algoritmo quickSort
50
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
71
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
51
-	
72
+
52
 	t1 = time.clock()				#seteamos el tiempo al empezar
73
 	t1 = time.clock()				#seteamos el tiempo al empezar
53
 	shellSort(lista)				#ejecutamos el algoritmo shellSort
74
 	shellSort(lista)				#ejecutamos el algoritmo shellSort
54
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
75
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
59
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
80
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
60
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
81
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
61
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
82
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
62
-