Browse Source

anadir quick sort

Ydnek1 3 years ago
parent
commit
2418628a71
1 changed files with 31 additions and 6 deletions
  1. 31
    6
      sorting.py

+ 31
- 6
sorting.py View File

4
 Este programa calcula el promedio de tiempo de ejecución de cuatro algoritmos de ordenamiento
4
 Este programa calcula el promedio de tiempo de ejecución de cuatro algoritmos de ordenamiento
5
 La variable maxValor define el valor maximo de los elementos de la lista
5
 La variable maxValor define el valor maximo de los elementos de la lista
6
 La variable largoLista define el largo de las listas a ordenar
6
 La variable largoLista define el largo de las listas a ordenar
7
-La variable veces define las veces que se va a hacer el ordenamiento 
7
+La variable veces define las veces que se va a hacer el ordenamiento
8
 Al final se imprimen los promedios de cada algortimo
8
 Al final se imprimen los promedios de cada algortimo
9
 """
9
 """
10
 from random import randint
10
 from random import randint
21
 	#definan el algoritmo de ordenamiento heapsort
21
 	#definan el algoritmo de ordenamiento heapsort
22
 	return lista
22
 	return lista
23
 
23
 
24
+
25
+def partition(lista, low, high):
26
+    pivot = lista[high]
27
+
28
+    i = low - 1
29
+
30
+    for j in range(low, high):
31
+        if (lista[j] < pivot):
32
+            i += 1
33
+            lista[i], lista[j] = lista[j], lista[i]
34
+
35
+    lista[i+1], lista[high] = lista[high], lista[i+1]
36
+
37
+    return i + 1
38
+
39
+def quickSortRec(lista, low, high):
40
+
41
+    if (low < high):
42
+        p = partition(lista, low, high)
43
+
44
+    quickSortRec(lista, low, p - 1)
45
+    quickSortRec(lista, p + 1, high)
46
+
47
+    return lista
48
+
24
 def quickSort(lista):
49
 def quickSort(lista):
25
 	#definan el algoritmo de ordenamiento quicksort
50
 	#definan el algoritmo de ordenamiento quicksort
26
-	return lista
51
+	return quickSortRec(lista, 0, len(lista) - 1)
27
 
52
 
28
 def insertionSort(lista):
53
 def insertionSort(lista):
29
 
54
 
61
 
86
 
62
 maxValor=1000 	#define el valor maximo de los elementos de la lista
87
 maxValor=1000 	#define el valor maximo de los elementos de la lista
63
 largoLista=1000 #define el largo de las listas a ordenar
88
 largoLista=1000 #define el largo de las listas a ordenar
64
-veces=100 		#define las veces que se va a hacer el ordenamiento 
89
+veces=100 		#define las veces que se va a hacer el ordenamiento
65
 
90
 
66
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
91
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
67
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
92
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
80
 	t1 = time.clock() 				#seteamos el tiempo al empezar
105
 	t1 = time.clock() 				#seteamos el tiempo al empezar
81
 	mergeSort(listaMerge) 				#ejecutamos el algoritmo mergeSort
106
 	mergeSort(listaMerge) 				#ejecutamos el algoritmo mergeSort
82
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
107
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
83
-	
108
+
84
 	t1 = time.clock()				#seteamos el tiempo al empezar
109
 	t1 = time.clock()				#seteamos el tiempo al empezar
85
 	heapSort(listaHeap)					#ejecutamos el algoritmo heapSort
110
 	heapSort(listaHeap)					#ejecutamos el algoritmo heapSort
86
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
111
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
87
-	
112
+
88
 	t1 = time.clock()				#seteamos el tiempo al empezar
113
 	t1 = time.clock()				#seteamos el tiempo al empezar
89
 	quickSort(listaQuick)				#ejecutamos el algoritmo quickSort
114
 	quickSort(listaQuick)				#ejecutamos el algoritmo quickSort
90
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
115
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
91
-	
116
+
92
 	t1 = time.clock()				#seteamos el tiempo al empezar
117
 	t1 = time.clock()				#seteamos el tiempo al empezar
93
 	shellSort(listaShell)				#ejecutamos el algoritmo shellSort
118
 	shellSort(listaShell)				#ejecutamos el algoritmo shellSort
94
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
119
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion