Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def merge_sort(arr):
- """
- Implementación del algoritmo Merge Sort.
- Divide la lista en mitades, ordena cada mitad
- y luego las fusiona ordenadamente.
- """
- if len(arr) <= 1:
- return arr
- # Dividir la lista en dos mitades
- mid = len(arr) // 2
- left = arr[:mid]
- right = arr[mid:]
- # Llamada recursiva para ordenar ambas mitades
- left_sorted = merge_sort(left)
- right_sorted = merge_sort(right)
- # Combinar las dos mitades ordenadas
- return merge(left_sorted, right_sorted)
- def merge(left, right):
- """
- Fusiona dos listas ordenadas en una sola lista ordenada.
- """
- result = []
- i = j = 0
- # Comparar elementos y fusionar
- while i < len(left) and j < len(right):
- if left[i] <= right[j]:
- result.append(left[i])
- i += 1
- else:
- result.append(right[j])
- j += 1
- # Agregar elementos restantes (si los hay)
- result.extend(left[i:])
- result.extend(right[j:])
- return result
- # Ejemplo de uso
- if __name__ == "__main__":
- data = [38, 27, 43, 3, 9, 82, 10]
- print("Lista original:", data)
- sorted_data = merge_sort(data)
- print("Lista ordenada:", sorted_data)
Advertisement