logo

Boblesortering i Python

Bubble Sort er en simpel sorteringsalgoritme, der gentagne gange går gennem listen, sammenligner tilstødende elementer og udskifter dem, hvis de er i den forkerte rækkefølge. Det hedder 'Bubble Sort', fordi mindre elementer 'bobler' til toppen af ​​listen. Selvom det ikke er den mest effektive sorteringsalgoritme, er den let at forstå og implementere, hvilket gør den til et godt udgangspunkt for at lære om sorteringsalgoritmer. I denne artikel vil vi dykke ned i konceptet Bubble Sort, levere en Python-implementering med output og diskutere tidskompleksiteten af ​​algoritmen.

hvis andet hvis andet java

Forståelse af boblesortering

Den grundlæggende idé bag Bubble Sort er at gentage listen flere gange, sammenligne tilstødende elementer og bytte dem, hvis de er ude af drift. Processen fortsætter, indtil der ikke er behov for flere swaps, hvilket indikerer, at listen nu er sorteret. Algoritmen har fået sit navn fra den måde, hvorpå mindre elementer gradvist bevæger sig til toppen af ​​listen, ligesom bobler, der stiger til overfladen.

Lad os nedbryde trinene i Bubble Sort-algoritmen:

  1. Gentag gennem listen: Start fra begyndelsen af ​​listen, og sammenlign hvert par af tilstødende elementer.
  2. Sammenlign og skift: Hvis elementerne er i den forkerte rækkefølge, så skift dem. Dette sikrer, at det større element 'bobler op' og det mindre bevæger sig ned.
  3. Fortsæt med at iterere: Gentag processen for hvert par af tilstødende elementer, indtil slutningen af ​​listen er nået.
  4. Gentag indtil sorteret: Fortsæt med at gentage listen, indtil der ikke er behov for flere swaps. På dette tidspunkt er listen sorteret.

Selvom Bubble Sort er ligetil at forstå, er det ikke den mest effektive sorteringsalgoritme, især for store datasæt. Dens tidskompleksitet er O(n^2) i værste fald, hvor 'n' er antallet af elementer i listen. Denne kvadratiske tidskompleksitet gør den mindre velegnet til store datasæt sammenlignet med mere avancerede sorteringsalgoritmer.

Python Implementering af Bubble Sort

Lad os nu implementere Bubble Sort i Python og observere dens adfærd med en prøveliste:

 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) 

I denne implementering tager bubble_sort-funktionen en liste (arr) som sin parameter og sorterer den på plads. Den indlejrede løkke sammenligner tilstødende elementer og bytter dem, hvis de er i den forkerte rækkefølge. Den ydre sløjfe sikrer, at processen gentages, indtil hele listen er sorteret.

Output og forklaring

Lad os køre den medfølgende Python-kode med prøvelisten og observere outputtet:

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

Her er den originale liste [64, 34, 25, 12, 22, 11, 90] sorteret med succes ved hjælp af boblesorteringsalgoritmen, hvilket resulterer i den sorterede liste [11, 12, 22, 25, 34, 64, 90].

Algoritmen itererer gennem listen flere gange, sammenligner og bytter elementer, indtil hele listen er sorteret. I hver passage 'bobler' det største usorterede element op til sin korrekte position. Denne proces fortsætter, indtil der ikke er behov for flere swaps, hvilket indikerer, at listen er fuldt sorteret.

Mens Bubble Sort sorterer listen med succes, er det vigtigt at bemærke, at dens tidskompleksitet gør den mindre effektiv for store datasæt sammenlignet med andre sorteringsalgoritmer som Merge Sort eller Hurtig sortering.

Tidskompleksitet af boblesortering

Forståelse af tidskompleksiteten af ​​en algoritme er afgørende for at evaluere dens effektivitet, især når der er tale om store datasæt. Tidskompleksiteten af ​​Bubble Sort er O(n^2) i værste fald, hvor 'n' er antallet af elementer på listen.

Lad os nedbryde tidskompleksitetsanalysen:

  • Den ydre sløjfe kører for 'n' iterationer, hvor 'n' er antallet af elementer på listen.
  • Den indre løkke kører også for 'n' iterationer i værste fald. Men efterhånden som algoritmen skrider frem, falder antallet af iterationer i den indre sløjfe, da det største usorterede element placeres på sin korrekte position i hver passage.
  • I værste fald er antallet af sammenligninger og swaps proportionalt med kvadratet af antallet af elementer i listen, hvilket resulterer i O(n^2) tidskompleksiteten. Dette gør Bubble Sort ineffektiv til store datasæt, og mere avancerede sorteringsalgoritmer med bedre tidskompleksitet foretrækkes ofte i applikationer fra den virkelige verden.

Konklusion

I denne artikel udforskede vi konceptet Bubble Sort, en simpel sorteringsalgoritme, der gentagne gange sammenligner og udskifter tilstødende elementer, indtil hele listen er sorteret. Vi leverede en Python-implementering af Bubble Sort, kørte den med en prøveliste og analyserede outputtet. Derudover diskuterede vi tidskompleksiteten af ​​Bubble Sort og fremhævede dens O(n^2) worst-case tidskompleksitet og dens implikationer for effektivitet.