Fhernd

merge_sort.py

Feb 25th, 2026
5,291
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | Source Code | 0 0
  1. def merge_sort(arr):
  2.     """
  3.    Implementación del algoritmo Merge Sort.
  4.    Divide la lista en mitades, ordena cada mitad
  5.    y luego las fusiona ordenadamente.
  6.    """
  7.     if len(arr) <= 1:
  8.         return arr
  9.  
  10.     # Dividir la lista en dos mitades
  11.     mid = len(arr) // 2
  12.     left = arr[:mid]
  13.     right = arr[mid:]
  14.  
  15.     # Llamada recursiva para ordenar ambas mitades
  16.     left_sorted = merge_sort(left)
  17.     right_sorted = merge_sort(right)
  18.  
  19.     # Combinar las dos mitades ordenadas
  20.     return merge(left_sorted, right_sorted)
  21.  
  22.  
  23. def merge(left, right):
  24.     """
  25.    Fusiona dos listas ordenadas en una sola lista ordenada.
  26.    """
  27.     result = []
  28.     i = j = 0
  29.  
  30.     # Comparar elementos y fusionar
  31.     while i < len(left) and j < len(right):
  32.         if left[i] <= right[j]:
  33.             result.append(left[i])
  34.             i += 1
  35.         else:
  36.             result.append(right[j])
  37.             j += 1
  38.  
  39.     # Agregar elementos restantes (si los hay)
  40.     result.extend(left[i:])
  41.     result.extend(right[j:])
  42.  
  43.     return result
  44.  
  45.  
  46. # Ejemplo de uso
  47. if __name__ == "__main__":
  48.     data = [38, 27, 43, 3, 9, 82, 10]
  49.     print("Lista original:", data)
  50.  
  51.     sorted_data = merge_sort(data)
  52.     print("Lista ordenada:", sorted_data)
Advertisement