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)
Comments
0 B
|👍
/👎
0 B
|👍
/👎