Bladeren bron

Adding/Fixing a few comments.

Jeann-Carlos 2 jaren geleden
bovenliggende
commit
eb707f35e4
1 gewijzigde bestanden met toevoegingen van 64 en 59 verwijderingen
  1. 64
    59
      sorting.py

+ 64
- 59
sorting.py Bestand weergeven

@@ -10,98 +10,103 @@ from random import randint
10 10
 import time
11 11
 from merge import merge
12 12
 
13
-# Python program for implementation of MergeSort
13
+'''
14
+ Python program for implementation of MergeSort  taken from https://www.geeksforgeeks.org/python-program-for-merge-sort/#:~:text=Merge%20Sort%20is%20a%20Divide,assumes%20that%20arr%5Bl..
15
+ Merges two subarrays of arr[].
16
+ First subarray is arr[l..m]
17
+ Second subarray is arr[m+1..r]
18
+'''
14 19
 
15
-# Merges two subarrays of arr[].
16
-# First subarray is arr[l..m]
17
-# Second subarray is arr[m+1..r]
18 20
 
19 21
 def mergeSort(lista, l, r):
20 22
 	if l < r:
21
-
22 23
 		# Same as (l+r)//2, but avoids overflow for
23 24
 		# large l and h
24
-		m = l+(r-l)//2
25
+		m = l + (r - l) // 2
25 26
 
26 27
 		# Sort first and second halves
27 28
 		mergeSort(lista, l, m)
28
-		mergeSort(lista, m+1, r)
29
+		mergeSort(lista, m + 1, r)
29 30
 		merge(lista, l, m, r)
30 31
 
32
+
31 33
 def heapSort(lista):
32
-	#definan el algoritmo de ordenamiento heapsort
34
+	# definan el algoritmo de ordenamiento heapsort
33 35
 	return lista
34 36
 
37
+
35 38
 def quickSort(lista):
36
-	#definan el algoritmo de ordenamiento quicksort
39
+	# definan el algoritmo de ordenamiento quicksort
37 40
 	return lista
38 41
 
42
+
43
+''' 
44
+	This algorithm was taken from: https://www.programiz.com/dsa/shell-sort 
45
+	and was adapted in order to work for this assigment.
46
+'''
47
+
48
+
39 49
 def shellSort(lista):
40
-	#definan el algoritmo de ordenamiento shellsort
41
-	# este algoritmo fue tomado de https://www.programiz.com/dsa/shell-sort 
42
-	# y adaptado para que funcione en este programa.
43
-	 
44
-	
45
-	# determinamos el tamaño de la lista para poder buscar el numero gap. 
50
+	# Determine the list size to find the gap.
46 51
 	n = len(lista)
47 52
 	gap = n // 2
48 53
 
49
-	# this algorithm will run until gap reaches 1 
54
+	# this algorithm will run until gap reaches 1
50 55
 	while gap > 0:
51 56
 		for i in range(gap, n):
52
-			temp = lista[i] # storing all items from lista into temp 
53
-			j = i 
57
+			temp = lista[i]  # storing all items from lista into temp
58
+			j = i
54 59
 
55 60
 			# compares the number in temp with the 0th possition (start of list)
56 61
 			# if temp is larger than the first element then we swap them
57
-			while j >= gap and lista[j - gap] > temp: 
62
+			while j >= gap and lista[j - gap] > temp:
58 63
 				lista[j] = lista[j - gap]
59 64
 				j -= gap
60 65
 
61 66
 			lista[j] = temp
62
-		gap = gap // 2 # decreases the gap to continue the loop 
67
+		gap = gap // 2  # decreases the gap to continue the loop
63 68
 
64 69
 	return lista
65 70
 
66
-maxValor=1000 	#define el valor maximo de los elementos de la lista
67
-largoLista=1000 	#define el largo de las listas a ordenar
68
-veces=100    		#define las veces que se va a hacer el ordenamiento
69 71
 
70
-acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
71
-acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
72
-acumulaQuick=0 	#variable para acumular el tiempo de ejecucion del quicksort
73
-acumulaShell=0 	#variable para acumular el tiempo de ejecucion del shellsort
72
+maxValor = 1000  # define el valor maximo de los elementos de la lista
73
+largoLista = 1000  # define el largo de las listas a ordenar
74
+veces = 100  # define las veces que se va a hacer el ordenamiento
74 75
 
75
-for i in range(veces):
76
-	mergelista = [randint(0,maxValor) for r in range(largoLista)] #creamos una lista con valores al azar
77
-	heaplista=list(mergelista)
78
-	quicklista=list(mergelista)
79
-	searchlista=list(mergelista)
80
-
81
-	t1 = time.process_time()					#tomamos el tiempo inicial
82
-	mergeSort(mergelista,0,len(mergelista)-1) 	#ejecutamos el algoritmo mergeSort
83
-	acumulaMerge+=time.process_time() - t1		#acumulamos el tiempo de ejecucion
84
-	#print(mergelista)							#desplegamos la lista
85
-
86
-	t1 = time.process_time()				#tomamos el tiempo inicial
87
-	heapSort(heaplista)					    #ejecutamos el algoritmo heapSort
88
-	acumulaHeap+=time.process_time() - t1 	#acumulamos el tiempo de ejecucion
89
-	#print(heaplista)						#desplegamos la lista
90
-
91
-	t1 = time.process_time()				#tomamos el tiempo inicial
92
-	quickSort(quicklista)					#ejecutamos el algoritmo quickSort
93
-	acumulaQuick+=time.process_time() - t1	#acumulamos el tiempo de ejecucion
94
-	#print(quicklista)						#desplegamos la lista
95
-
96
-	t1 = time.process_time()				#tomamos el tiempo inicial
97
-	shellSort(searchlista)					#ejecutamos el algoritmo shellSort
98
-	acumulaShell+=time.process_time() - t1	#acumulamos el tiempo de ejecucion
99
-	print(searchlista)						#desplegamos la lista
100
-
101
-#imprimos los resultados
102
-print ("Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista))
103
-print ("MergeSort " + str(acumulaMerge/veces) + " segundos")
104
-print ("HeapSort " + str(acumulaHeap/veces) + " segundos")
105
-print ("QuickSort " + str(acumulaQuick/veces) + " segundos")
106
-print ("ShellSort " + str(acumulaShell/veces) + " segundos")
76
+acumulaMerge = 0  # variable para acumular el tiempo de ejecucion del mergesort
77
+acumulaHeap = 0  # variable para acumular el tiempo de ejecucion del heapsort
78
+acumulaQuick = 0  # variable para acumular el tiempo de ejecucion del quicksort
79
+acumulaShell = 0  # variable para acumular el tiempo de ejecucion del shellsort
107 80
 
81
+for i in range(veces):
82
+	mergelista = [randint(0, maxValor) for r in range(largoLista)]  # creamos una lista con valores al azar
83
+	heaplista = list(mergelista)
84
+	quicklista = list(mergelista)
85
+	searchlista = list(mergelista)
86
+
87
+	t1 = time.process_time()  # tomamos el tiempo inicial
88
+	mergeSort(mergelista, 0, len(mergelista) - 1)  # ejecutamos el algoritmo mergeSort
89
+	acumulaMerge += time.process_time() - t1  # acumulamos el tiempo de ejecucion
90
+	print(mergelista)  # desplegamos la lista
91
+
92
+	t1 = time.process_time()  # tomamos el tiempo inicial
93
+	heapSort(heaplista)  # ejecutamos el algoritmo heapSort
94
+	acumulaHeap += time.process_time() - t1  # acumulamos el tiempo de ejecucion
95
+	# print(heaplista)						#desplegamos la lista
96
+
97
+	t1 = time.process_time()  # tomamos el tiempo inicial
98
+	quickSort(quicklista)  # ejecutamos el algoritmo quickSort
99
+	acumulaQuick += time.process_time() - t1  # acumulamos el tiempo de ejecucion
100
+	# print(quicklista)						#desplegamos la lista
101
+
102
+	t1 = time.process_time()  # tomamos el tiempo inicial
103
+	shellSort(searchlista)  # ejecutamos el algoritmo shellSort
104
+	acumulaShell += time.process_time() - t1  # acumulamos el tiempo de ejecucion
105
+	print(searchlista)  # desplegamos la lista
106
+
107
+# imprimos los resultados
108
+print("Promedio de tiempo de ejecucion de " + str(veces) + " listas de largo " + str(largoLista))
109
+print("MergeSort " + str(acumulaMerge / veces) + " segundos")
110
+print("HeapSort " + str(acumulaHeap / veces) + " segundos")
111
+print("QuickSort " + str(acumulaQuick / veces) + " segundos")
112
+print("ShellSort " + str(acumulaShell / veces) + " segundos")