Browse Source

MergeSort function code added

Alex Ortiz 2 years ago
parent
commit
9719acd64b
1 changed files with 25 additions and 6 deletions
  1. 25
    6
      sorting.py

+ 25
- 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
11
 
11
 
12
 def mergeSort(lista):
12
 def mergeSort(lista):
13
 	#definan el algoritmo de ordenamiento mergesort
13
 	#definan el algoritmo de ordenamiento mergesort
14
+	if len(lista) > 1:
15
+		Midd = len(lista) // 2
16
+		Left = lista[:Midd]
17
+		if len(Left) != 1:
18
+			mergeSort(Left)
19
+		Right = lista[Midd:]
20
+		if len(Right) != 1:
21
+			mergeSort(Right)
22
+
23
+        i = j = k = 0
24
+
25
+        while i < len(Left) and j < len(Right):
26
+            if Left[i] < Right[j]:
27
+                lista[k] = Right[i]
28
+                i += 1
29
+            else:
30
+                lista[k] = Right[j]
31
+                j += 1
32
+            k += 1
33
+
14
 	return lista
34
 	return lista
15
 
35
 
16
 def heapSort(lista):
36
 def heapSort(lista):
27
 
47
 
28
 maxValor=1000 	#define el valor maximo de los elementos de la lista
48
 maxValor=1000 	#define el valor maximo de los elementos de la lista
29
 largoLista=1000 #define el largo de las listas a ordenar
49
 largoLista=1000 #define el largo de las listas a ordenar
30
-veces=100 		#define las veces que se va a hacer el ordenamiento 
50
+veces=100 		#define las veces que se va a hacer el ordenamiento
31
 
51
 
32
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
52
 acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
33
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
53
 acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
43
 	t1 = time.clock() 				#seteamos el tiempo al empezar
63
 	t1 = time.clock() 				#seteamos el tiempo al empezar
44
 	mergeSort(mergelista) 				#ejecutamos el algoritmo mergeSort
64
 	mergeSort(mergelista) 				#ejecutamos el algoritmo mergeSort
45
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
65
 	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
46
-	
66
+
47
 	t1 = time.clock()				#seteamos el tiempo al empezar
67
 	t1 = time.clock()				#seteamos el tiempo al empezar
48
 	heapSort(heaplista)					#ejecutamos el algoritmo heapSort
68
 	heapSort(heaplista)					#ejecutamos el algoritmo heapSort
49
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
69
 	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
50
-	
70
+
51
 	t1 = time.clock()				#seteamos el tiempo al empezar
71
 	t1 = time.clock()				#seteamos el tiempo al empezar
52
 	quickSort(quicklista)				#ejecutamos el algoritmo quickSort
72
 	quickSort(quicklista)				#ejecutamos el algoritmo quickSort
53
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
73
 	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
54
-	
74
+
55
 	t1 = time.clock()				#seteamos el tiempo al empezar
75
 	t1 = time.clock()				#seteamos el tiempo al empezar
56
 	shellSort(searchlista)				#ejecutamos el algoritmo shellSort
76
 	shellSort(searchlista)				#ejecutamos el algoritmo shellSort
57
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
77
 	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
62
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
82
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
63
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
83
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
64
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
84
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
65
-