logo

Bellen sorteren in Python

Bubble Sort is een eenvoudig sorteeralgoritme dat herhaaldelijk door de lijst loopt, aangrenzende elementen vergelijkt en ze verwisselt als ze in de verkeerde volgorde staan. Het heet 'Bubble Sort' omdat kleinere elementen naar de top van de lijst 'bubbelen'. Hoewel dit niet het meest efficiënte sorteeralgoritme is, is het gemakkelijk te begrijpen en te implementeren, waardoor het een goed startpunt is om meer te leren over sorteeralgoritmen. In dit artikel gaan we dieper in op het concept van Bubble Sort, voorzien we een Python-implementatie van output en bespreken we de tijdscomplexiteit van het algoritme.

Inzicht in het sorteren van bellen

Het basisidee achter Bubble Sort is om de lijst meerdere keren te doorlopen, aangrenzende elementen te vergelijken en ze om te wisselen als ze niet in de juiste volgorde staan. Het proces gaat door totdat er geen swaps meer nodig zijn, wat aangeeft dat de lijst nu is gesorteerd. Het algoritme dankt zijn naam aan de manier waarop kleinere elementen geleidelijk naar de top van de lijst bewegen, net zoals bellen die naar de oppervlakte stijgen.

Laten we de stappen van het Bubble Sort-algoritme opsplitsen:

java aaneengeschakelde tekenreeksen
  1. Doorloop de lijst: Begin vanaf het begin van de lijst en vergelijk elk paar aangrenzende elementen.
  2. Vergelijk en wissel: Als de elementen in de verkeerde volgorde staan, verwissel ze dan. Dit zorgt ervoor dat het grotere element ‘opborrelt’ en het kleinere naar beneden beweegt.
  3. Ga door met herhalen: herhaal het proces voor elk paar aangrenzende elementen totdat het einde van de lijst is bereikt.
  4. Herhaal tot gesorteerd: Blijf de lijst doorlopen totdat er geen swaps meer nodig zijn. Op dit punt wordt de lijst gesorteerd.

Hoewel Bubble Sort eenvoudig te begrijpen is, is het niet het meest efficiënte sorteeralgoritme, vooral niet voor grote datasets. De tijdscomplexiteit is O(n^2) in het ergste geval, waarbij 'n' het aantal elementen in de lijst is. Deze kwadratische tijdscomplexiteit maakt het minder geschikt voor grote datasets in vergelijking met meer geavanceerde sorteeralgoritmen.

Python-implementatie van Bubble Sort

Laten we nu Bubble Sort in Python implementeren en het gedrag ervan observeren met een voorbeeldlijst:

 def bubble_sort(arr): n = len(arr) # Traverse through all array elements for i in range(n): # Last i elements are already sorted, so we don't need to check them for j in range(0, n-i-1): # Swap if the element found is greater than the next element if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] # Example usage if __name__ == '__main__': # Sample list to be sorted sample_list = [64, 34, 25, 12, 22, 11, 90] # Display the original list print('Original List:', sample_list) # Apply Bubble Sort bubble_sort(sample_list) # Display the sorted list print('Sorted List:', sample_list) 

In deze implementatie neemt de functie bubble_sort een lijst (arr) als parameter en sorteert deze op zijn plaats. De geneste lus vergelijkt aangrenzende elementen en verwisselt ze als ze in de verkeerde volgorde staan. De buitenste lus zorgt ervoor dat het proces wordt herhaald totdat de hele lijst is gesorteerd.

Uitvoer en uitleg

Laten we de meegeleverde Python-code uitvoeren met de voorbeeldlijst en de uitvoer bekijken:

 Original List: [64, 34, 25, 12, 22, 11, 90] Sorted List: [11, 12, 22, 25, 34, 64, 90] 

Hier wordt de oorspronkelijke lijst [64, 34, 25, 12, 22, 11, 90] succesvol gesorteerd met behulp van het Bubble Sort-algoritme, wat resulteert in de gesorteerde lijst [11, 12, 22, 25, 34, 64, 90].

hoe char naar string-java te converteren

Het algoritme doorloopt de lijst meerdere keren, waarbij elementen worden vergeleken en verwisseld totdat de hele lijst is gesorteerd. Bij elke doorgang 'borrelt' het grootste ongesorteerde element naar de juiste positie. Dit proces gaat door totdat er geen swaps meer nodig zijn, wat aangeeft dat de lijst volledig is gesorteerd.

Hoewel Bubble Sort de lijst met succes sorteert, is het belangrijk op te merken dat de tijdscomplexiteit deze minder efficiënt maakt voor grote datasets in vergelijking met andere sorteeralgoritmen zoals Merge Sort of Quick Sort.

Tijdcomplexiteit van bellensortering

powershell kleiner dan of gelijk aan

Het begrijpen van de tijdscomplexiteit van een algoritme is cruciaal voor het evalueren van de efficiëntie ervan, vooral als het om grote datasets gaat. De tijdscomplexiteit van Bubble Sort is O(n^2) in het ergste geval, waarbij 'n' het aantal elementen in de lijst is.

Laten we de tijdcomplexiteitsanalyse opsplitsen:

  • De buitenste lus loopt voor 'n'-iteraties, waarbij 'n' het aantal elementen in de lijst is.
  • In het ergste geval loopt de binnenste lus ook voor 'n' iteraties. Naarmate het algoritme vordert, neemt het aantal iteraties in de binnenste lus echter af, omdat het grootste ongesorteerde element bij elke doorgang op de juiste positie wordt geplaatst.
  • In het ergste geval is het aantal vergelijkingen en verwisselingen evenredig met het kwadraat van het aantal elementen in de lijst, wat resulteert in de tijdscomplexiteit O(n^2). Dit maakt Bubble Sort inefficiënt voor grote datasets, en geavanceerdere sorteeralgoritmen met betere tijdscomplexiteit hebben vaak de voorkeur in toepassingen in de echte wereld.

Conclusie

In dit artikel hebben we het concept van Bubble Sort onderzocht, een eenvoudig sorteeralgoritme dat aangrenzende elementen herhaaldelijk vergelijkt en verwisselt totdat de hele lijst is gesorteerd. We hebben een Python-implementatie van Bubble Sort geleverd, deze uitgevoerd met een voorbeeldlijst en de uitvoer geanalyseerd. Daarnaast hebben we de tijdscomplexiteit van Bubble Sort besproken, waarbij we de O(n^2) worst-case tijdscomplexiteit en de implicaties ervan voor de efficiëntie hebben benadrukt.