Sortowanie bąbelkowe (bubble sort) | Korepetycje do matury z informatyki - Maurycy Gast

Sortowanie bąbelkowe (bubble sort)

Sortowanie bąbelkowe jest jednym z najprostszych algorytmów, który umożliwia posortowanie danych malejąco bądź rosnąco. Nazwa algorytmu pochodzi od jego implementacji. W trakcie kolejnych cykli algorytmu porównywane są ze sobą dwie liczby znajdujące się obok siebie. Ta z nich, która jest większa (przy sortowaniu rosnąco)/ mniejsza (przy sortowaniu malejąco) zostaje przesunięta w prawą stronę. Algorytm kończy się, gdy wszystkie wartości zostaną ułożone w zadanej kolejności.

Należy pamiętać, że ten algorytm nie jest zbyt dobrym wyborem, jeżeli naszym zadaniem jest posortowanie dużej ilości danych. W takiej sytuacji wykonywać się on będzie dużo dłużej, w przeciwieństwie do innych, znanych metod sortowania.

Przykład algorytmu sortowania bąbelkowego

Przy pomocy algorytmu sortowania bąbelkowego posortujmy poniższą tablicę danych w kolejności rosnącej. Począwszy od lewej strony należy porównywać ze sobą po dwie kolejne wartości.

sortowanie bąbelkowe c++
Tablica danych, która posłuży jako przykład dla sortowania bąbelkowego.

Poniższa animacja prezentuje sposób działania algorytmu. Zwróć uwagę, że gdy wykonamy pierwszy cykl sortowania to na końcu będzie się znajdować najwyższa wartość. Wiedząc o tym, możemy ograniczyć ilość wykonywanych porównań w kolejnych cyklach. Wartości posortowane będą znajdowały się po prawej stronie, a te nieposortowane po lewej.

sortowanie bąbelkowe python
Animacja prezentująca sortowanie bąbelkowe.

Implementacja algorytmu sortowania bąbelkowego

Aby poprawnie zaimplementować algorytm, należy użyć zagnieżdżonych pętli for. Pętla nadrzędna powinna działać n – 1 razy, gdzie n oznacza liczbę elementów w sortowanym zestawie danych. Druga z pętli powinna się wykonywać n – 1 – i razy, gdzie i jest wartością iterowaną przez nadrzędną pętlę for. Jeżeli element o indeksie j będzie większy od elementu o indeksie j + 1 to dojdzie do zamiany wartości miejscami.

Implementacja algorytmu sortowania bąbelkowego języku C++

for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j < n - i - 1; j++) {
        if (tab[j] > tab[j + 1])
            swap(tab[j], tab[j + 1]);
    }
}

Implementacja algorytmu sortowania bąbelkowego języku Python

for i in range(0, n - 1):
    for j in range(0, n - i - 1):
        if tab[j] > tab[j + 1]:
            tab[j], tab[j + 1] = tab[j + 1], tab[j]


Dodaj komentarz

kurs maturalny informatyka