瀏覽代碼

Merge remote-tracking branch 'remotes/origin/sortingFinal' into sortingAndrel

added heapSort
andrelfuentes 1 年之前
父節點
當前提交
66dd09a9f7
共有 1 個檔案被更改,包括 54 行新增3 行删除
  1. 54
    3
      sorting.py

+ 54
- 3
sorting.py 查看文件

@@ -11,9 +11,60 @@ from random import randint
11 11
 import time
12 12
 
13 13
 def mergeSort(lista):
14
-	#definan el algoritmo de ordenamiento mergesort
15
-	return lista
16
-
14
+    #definan el algoritmo de ordenamiento mergesort
15
+    # se vieron videos y se leyo sobre el algoritmo en GeekforGeeks, educative.io y medium.com el codigo fue basado en esto
16
+
17
+    # si tiene al menos un elemento
18
+    if len(lista) > 1:
19
+        # buscar mitad de lista
20
+        middle = len(lista)//2
21
+        # llamada recursiva de mitad izq de lista
22
+        Left = mergeSort(lista[:middle])
23
+        # llamada recursiva de mitad derecha de lista
24
+        Right = mergeSort(lista[middle:])
25
+
26
+        # return y llamada recursiva merge para combinar ambas listas
27
+        return merge(Right, Left, lista)
28
+
29
+    # se devuelve cuando solamente haya un elemento
30
+    return lista
31
+
32
+def merge(Right, Left, lista):
33
+    # acumuladores 
34
+    i = 0
35
+    j = 0
36
+    k = 0
37
+
38
+    # comparar las dos listas y ordenar de manera ascendiente 
39
+    while i < len(Left) and j < len(Right):
40
+        # si el elemento de la izq es menor que la derecha
41
+        # añadelo a la lista
42
+        if Left[i] < Right[j]:
43
+            lista[k] = Left[i]
44
+            i += 1
45
+            k += 1
46
+        # si el elemento de la derecha es menor que la derecha
47
+        # añadelo a la lista
48
+        else:
49
+            lista[k] = Right[j]
50
+            j += 1
51
+            k += 1
52
+
53
+    # si quedan elementos en la lista izq añadelos en la lista
54
+    while i < len(Left):
55
+        lista[k] = Left[i]
56
+        i += 1
57
+        k += 1
58
+
59
+    # si quedan elementos en la lista derecha añadelos en la lista
60
+    while j < len(Right):
61
+        lista[k] = Right[j]
62
+        j += 1
63
+        k += 1
64
+    
65
+    return lista
66
+
67
+	
17 68
 def heapSort(lista):
18 69
 	#trabajado por Andrel Fuentes
19 70
 	#definan el algoritmo de ordenamiento heapsort