
Jose Colmenares
PreguntaHay algo que no termino de entender… Los while para la ordenación no deberían estar indentados al mismo nivel que el if? porque están dentro del if?

Moisés Manuel Morín Hevia
Porque cuando cortas a la mitad se hacen sublistas que comparan uno a uno y las acomodan por su valor.

Julio Cardenas
Jose luis el caso base en la iteracion es cuando la lista que da con un solo elemento, de lo contrario no se hace nada
def ordenamiento_por_mezcla(lista): if len(lista) > 1: medio = len(lista) // 2 izquierda = lista[:medio] derecha = lista[medio:] print(izquierda, '*' * 5, derecha) # llamada recursiva en cada mitad izquierda = ordenamiento_por_mezcla(izquierda) derecha = ordenamiento_por_mezcla(derecha) # Iteradores para recorrer las dos sublistas i = 0 j = 0 # Iterador para la lista principal k = 0 while i < len(izquierda) and j < len(derecha): if izquierda[i] < derecha[j]: lista[k] = izquierda[i] i += 1 else: lista[k] = derecha[j] j += 1 k += 1 while i < len(izquierda): lista[k] = izquierda[i] i += 1 k +=1 while j < len(derecha): lista[k] = derecha[j] j += 1 k += 1 print(f'izquierda {izquierda}, derecha {derecha}') print(lista) print('-' * 50) else: pass return lista

Mario Laserna Hernández
No porque en el proceso de dividir la lista en sublistas, cuando quedan en 1 de longitud hace la comparación, entonces toda la operación de realiza dentro del if inicial