ComenzarEmpieza gratis

Corrección de un error en el algoritmo de ordenamiento por mezcla

Te han dado un programa que ordena una lista de números utilizando el algoritmo de ordenamiento por mezcla. Mientras pruebas la función merge_sort(), te das cuenta de que el código no es correcto. ¿Puedes corregir el algoritmo para que funcione correctamente?

Este ejercicio forma parte del curso

Estructuras de datos y algoritmos en Python

Ver curso

Instrucciones del ejercicio

  • Corrige el error al asignar la mitad izquierda.
  • Corrige el error al asignar la mitad derecha.
  • Corrige el error al actualizar el puntero de la mitad izquierda.
  • Corrige el error al actualizar el puntero de la mitad derecha.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

def merge_sort(my_list):
    if len(my_list) > 1: 
        mid = len(my_list)//2
        left_half = my_list[:mid]
        right_half = my_list[mid:]
        
        merge_sort(left_half)
        merge_sort(right_half)
 
        i = j = k = 0
 
        while i < len(left_half) and j < len(right_half):
            if left_half[i] < right_half[j]:
        		# Correct mistake when assigning left half
                my_list[k] = right_half[i]                
                i += 1
            else:
                # Correct mistake when assigning right half
                my_list[k] = left_half[j]
                j += 1
            k += 1
            
        while i < len(left_half):
            my_list[k] = left_half[i]
            # Correct mistake when updating pointer for left half
            j += 1
            k += 1
 
        while j < len(right_half):
            my_list[k] = right_half[j]
            # Correct mistake when updating pointer for right half
            i += 1
            k += 1

my_list = [35,22,90,4,50,20,30,40,1]
merge_sort(my_list)
print(my_list)
Editar y ejecutar código