Algorytm sortowania bąbelkowego

Sortowanie bąbelkowe to prosty algorytm używany do sortowania podanego zestawu n elementy podane w postaci tablicy z n liczbą elementów. Sortowanie bąbelkowe porównuje wszystkie elementy jeden po drugim i sortuje je na podstawie ich wartości.

Jeśli dana tablica ma być posortowana w kolejności rosnącej, sortowanie bąbelkowe rozpocznie się od porównania pierwszego elementu tablicy z drugi element, jeśli pierwszy element jest większy niż drugi, zamieni oba elementy, a następnie przejdzie do porównania drugiego i trzeciego elementu itd.

Jeśli mamy total n, a następnie musimy powtórzyć ten proces n-1 razy.

Jest to znane jako sortowanie bąbelkowe, ponieważ z każdą pełną iteracją największy element w danej tablicy bąbelkuje w kierunku ostatniego miejsca lub najwyższego indeksu, tak jak bąbelek wody unosi się na powierzchnię wody.

Sortowanie odbywa się poprzez przejście przez wszystkie elementy jeden po drugim i porównując je z sąsiednimi elementami i zamieniając je w razie potrzeby.

UWAGA: Jeśli nie jesteś zaznajomiony z sortowaniem w strukturze danych, powinieneś: najpierw dowiedz się, czym jest sortowanie, aby dowiedzieć się o podstawach sortowania.

Implementowanie algorytmu sortowania bąbelkowego

Poniżej przedstawiono kroki związane z sortowaniem bąbelkowym (do sortowania podanej tablicy w porządku rosnącym):

  1. Rozpoczynając od pierwszego elementu (indeks = 0), porównaj bieżący element z następnym elementem tablicy.
  2. Jeśli bieżący element jest większy niż następny element tablicy, zamień je.
  3. Jeśli bieżący element jest mniejszy niż następny, przejdź do następnego elementu. Powtórz krok 1.

Rozważmy tablicę z wartościami {5, 1, 6, 2, 4, 3}

Poniżej mamy obrazkowa reprezentacja tego, jak sortowanie bąbelkowe posortuje podaną tablicę.

Jak widać na powyższym przykładzie, po w pierwszej iteracji 6 jest umieszczany na ostatnim indeksie, który jest dla niego prawidłową pozycją.

Podobnie po drugiej iteracji 5 będzie na przedostatnim indeksie i tak dalej.

Czas na napisanie kodu dla sortowania bąbelkowego:

Chociaż powyższa logika posortuje nieposortowaną tablicę, nadal powyższy algorytm nie jest wydajny, ponieważ zgodnie z powyższą logiką zewnętrzne for będzie wykonywana przez 6 iteracji, nawet jeśli tablica zostanie posortowana po drugiej iteracji.

Możemy więc wyraźnie zoptymalizować nasz algorytm.

Zoptymalizowany algorytm sortowania bąbelkowego

Aby zoptymalizować nasz bubb le sort, możemy wprowadzić flag, aby monitorować, czy elementy są zamieniane wewnątrz wewnętrznej pętli for.

Dlatego w wewnętrznej for pętli sprawdzamy, czy za każdym razem ma miejsce zamiana elementów.

Jeśli dla określonej iteracji nie było zamiany place, oznacza to, że tablica została posortowana i możemy wyskoczyć z pętli for, zamiast wykonywać wszystkie iteracje.

Rozważmy tablicę z wartościami {11, 17, 18, 26, 23}

Poniżej znajduje się obrazkowa reprezentacja tego, jak zoptymalizowane sortowanie bąbelkowe posortuje daną tablicę.

Jak widać, w pierwszej iteracji nastąpiła zamiana, dlatego zaktualizowaliśmy naszą flag wartość do 1, w rezultacie wykonanie ponownie wchodzi do pętli for. Jednak w drugiej iteracji zamiana nie nastąpi, dlatego wartość flag pozostanie 0, a wykonanie wyrwie się z pętli.

W powyższym kodzie, w funkcji bubbleSort, jeśli pojedynczy pełny cykl j iteracji (wewnętrzna for pętla), nie ma zamiany, a następnie flag pozostanie 0, a następnie wyrwiemy się z pętli for, ponieważ tablica została już posortowana.

Analiza złożoności sortowania bąbelkowego

W sortowaniu bąbelkowym n-1 porównania będą wykonywane w pierwszym przebiegu, n-2 w drugim przebiegu, n-3 w trzecim przebiegu i tak dalej. Zatem całkowita liczba porównań będzie wynosić,

(n-1) + (n-2) + (n-3) + ….. + 3 + 2 + 1Sum = n (n- 1) /2i.e O (n2)

Stąd złożoność czasowa sortowania bąbelkowego wynosi O (n2).

Główną zaletą sortowania bąbelkowego jest prostota algorytmu.

Złożoność przestrzeni dla sortowania bąbelkowego wynosi O (1), ponieważ wymagana jest tylko jedna dodatkowa pamięć, tj. dla zmiennej temp.

Ponadto najlepszą złożonością czasową przypadku będzie O (n), wtedy lista jest już posortowana.

Poniżej przedstawiono złożoność czasu i przestrzeni dla algorytmu sortowania bąbelkowego.

Teraz, gdy poznaliśmy algorytm sortowania bąbelkowego, możesz sprawdzić te algorytmy sortowania i ich zastosowania:

  • Sortowanie przez wstawianie
  • Sortowanie przez wybór
  • Szybkie sortowanie
  • sortowanie scalane
  • Sortowanie na stosach
  • Sortowanie według liczenia

Write a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *