LoslegenKostenlos loslegen

Behebung eines Fehlers im Merge-Sortieralgorithmus

Du hast ein Programm erhalten, das eine Liste von Zahlen mit Hilfe des Merge-Sortieralgorithmus sortiert. Während du die Funktion merge_sort() testest, stellst du fest, dass der Code nicht korrekt ist. Kannst du den Algorithmus so korrigieren, dass er richtig funktioniert?

Diese Übung ist Teil des Kurses

Datenstrukturen und Algorithmen in Python

Kurs anzeigen

Anleitung zur Übung

  • Korrigiere den Fehler beim Zuordnen der linken Hälfte.
  • Korrigiere den Fehler beim Zuordnen der rechten Hälfte.
  • Korrigiere den Fehler beim Aktualisieren des Zeigers für die linke Hälfte.
  • Korrigiere den Fehler beim Aktualisieren des Zeigers für die rechte Hälfte.

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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)
Code bearbeiten und ausführen