Algorytm sortowania bąbelkowego w językach C, Java i Python

Ostatnia aktualizacja: 30 listopada 2025
  • Prosty i stabilny algorytm sortujący poprzez porównywanie i zamianę sąsiadujących elementów, idealny do nauki podstaw.
  • Jego złożoność wynosi O(n^2), więc jest nieefektywny w przypadku dużych zbiorów i wykonuje wiele niepotrzebnych porównań.
  • Pokazano jego implementację w językach C, Java i Python; w przypadku większych zbiorów danych istnieją bardziej wydajne alternatywy, takie jak sortowanie szybkie i sortowanie przez scalanie.
Algorytm sortowania bąbelkowego

Algorytm sortowania bąbelkowego jest jednym z najprostszych i najbardziej podstawowych algorytmów służących do sortowania elementów listy. Jego prostota sprawia, że ​​jest doskonałym wyborem dla osób chcących zrozumieć podstawowe koncepcje algorytmów sortowania. Algorytm ten jest powszechnie używany w aplikacjach i programach, w których liczba elementów do posortowania jest niewielka.

W tym artykule skupimy się na implementacji algorytmu sortowania bąbelkowego w dwóch popularnych językach programowania: C i Java. Przeanalizujemy kroki niezbędne do implementacji tego algorytmu w każdym z tych języków, analizując kod źródłowy i podając szczegółowe wyjaśnienia.

Algorytm sortowania bąbelkowego w językach C i Java

Algorytm sortowania bąbelkowego, jak sama nazwa wskazuje, polega na porównywaniu par sąsiadujących ze sobą elementów na liście i dokonywaniu zamiany, jeśli znajdują się one w niewłaściwej kolejności. Proces ten powtarza się aż do całkowitego posortowania listy.

Jak działa algorytm sortowania bąbelkowego w językach C i Java?

Algorytm sortowania bąbelkowego wykorzystuje proste, ale efektywne podejście do sortowania elementów. Ogólne działanie algorytmu pokazano poniżej:

  1. Zaczynamy od nieuporządkowanej listy elementów.
  2. Przeglądamy listę, porównując każdą parę sąsiadujących elementów.
  3. Jeśli elementy są w złej kolejności, zamieniamy je.
  4. Kontynuujemy iterację listy, aż zostanie ona całkowicie posortowana.
  5. Proces iteracji powtarzany jest tyle razy, ile jest to konieczne, aż do momentu, gdy w pełnym przejściu nie zostaną wykonane żadne zamiany.

Implementacja algorytmu sortowania bąbelkowego w języku C

Poniżej przedstawiamy implementację algorytmu sortowania bąbelkowego w języku C :

#include <stdio.h>

void bubbleSort(int array[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

int main() {
    int array[] = {64, 34, 25, 12, 22, 11, 90};
    int size = sizeof(array) / sizeof(array[0]);
    bubbleSort(array, size);
    printf("Array ordenado: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    return 0;
}

W tym kodzie algorytmu bąbelkowego zdefiniowaliśmy funkcję o nazwie bubbleSort który przyjmuje tablicę i jej rozmiar jako parametry. Funkcja wykonuje algorytm sortowania bąbelkowego przy użyciu dwóch pętli for. Pierwsza pętla for iteruje po elementach tablicy i drugiej pętli for dokonać niezbędnych porównań i wymian.

  8 fascynujących faktów o Samuelu Morse'ie

Na koniec w funkcji main, stworzyliśmy przykładową tablicę i obliczyliśmy jej rozmiar. Następnie wywołujemy funkcję bubbleSort przekazując tablicę i jej rozmiar jako argumenty. Na koniec wyświetlamy posortowaną tablicę na ekranie.

Implementacja algorytmu sortowania bąbelkowego w Javie

Poniżej przedstawiamy implementację algorytmu sortowania bąbelkowego w języku Java:

import java.util.Arrays;

public class BubbleSort {
    public static void bubbleSort(int[] array) {
        int size = array.length;
        for (int i = 0; i < size - 1; i++) {
            for (int j = 0; j < size - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(array);
        System.out.println("Array ordenado: " + Arrays.toString(array));
    }
}

W tym kodzie zdefiniowaliśmy klasę o nazwie BubbleSort. W tej klasie zadeklarowaliśmy metodę statyczną o nazwie bubbleSort który przyjmuje tablicę jako parametr. Metoda bubbleSort wykonuje algorytm sortowania bąbelkowego przy użyciu dwóch pętli for, tak jak w implementacji C.

w metodzie main, stworzyliśmy przykładową tablicę i wywołaliśmy metodę bubbleSort przekazując tablicę jako argument. Na koniec używamy Arrays.toString(array) aby wydrukować posortowaną tablicę na konsoli.

Implementacja algorytmu sortowania bąbelkowego w Pythonie

Odpowiednik algorytmu sortowania bąbelkowego w Pythonie:

def bubble_sort(array):
    size = len(array)
    for i in range(size - 1):
        for j in range(size - i - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]

array = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(array)
print("Array ordenado:", array)


 

Zalety algorytmu sortowania bąbelkowego

Algorytm sortowania bąbelkowego ma pewne zalety, takie jak:

  1. Prostota:Algorytm sortowania bąbelkowego jest łatwy do zrozumienia i wdrożenia. Nie wymaga skomplikowanej wiedzy i nadaje się dla osób początkujących w programowaniu.
  2. Niska złożoność kodu:Kod niezbędny do zaimplementowania algorytmu sortowania bąbelkowego jest stosunkowo krótki i zwięzły. Dzięki temu jest to szybka opcja sortowania niewielkiej liczby elementów.

Wady algorytmu sortowania bąbelkowego

Mimo swojej prostoty algorytm sortowania bąbelkowego ma również pewne wady:

  1. Nieefektywność w dużych zbiorach danych:Algorytm sortowania bąbelkowego nie jest wydajny pod względem czasu wykonywania przy pracy z dużymi zbiorami danych. Jego złożoność czasowa wynosi O(n^2), co oznacza, że ​​czas wykonania gwałtownie wzrasta wraz ze wzrostem rozmiaru zbioru danych.
  2. Liczba porównań:Algorytm sortowania bąbelkowego wykonuje dużą liczbę porównań, nawet gdy tablica jest już posortowana. Może to doprowadzić do niepotrzebnej utraty wydajności i zasobów.
  Wprowadzenie do algorytmów: kompletny przewodnik

Alternatywy dla algorytmu sortowania bąbelkowego

Wraz ze wzrostem rozmiaru i złożoności zbiorów danych, istotne staje się rozważenie bardziej efektywnych alternatyw dla algorytmu sortowania bąbelkowego. Do popularnych alternatyw zaliczają się:

  1. Algorytm sortowania przez wstawianie:Ten algorytm dzieli listę na część uporządkowaną i nieuporządkowaną, a następnie wstawia każdy element części nieuporządkowanej na odpowiednią pozycję w części uporządkowanej. W najgorszym przypadku jego złożoność czasowa wynosi O(n^2), ale w większości przypadków jest bardziej wydajny niż algorytm sortowania bąbelkowego.
  2. Algorytm sortowania przez wybór:Algorytm ten dzieli listę na część uporządkowaną i nieuporządkowaną, a następnie wielokrotnie wybiera najmniejszy element z części nieuporządkowanej i umieszcza go na końcu części uporządkowanej. Jego złożoność czasowa w najgorszym przypadku wynosi O(n^2), ale w większości przypadków jest on wydajniejszy niż algorytm sortowania bąbelkowego.

Najczęściej zadawane pytania dotyczące algorytmu Bubble

1. Jaka jest złożoność czasowa algorytmu sortowania bąbelkowego?

Algorytm sortowania bąbelkowego ma złożoność czasową O(n^2), gdzie „n” to liczba elementów do posortowania. Oznacza to, że czas działania algorytmu zwiększa się kwadratowo wraz ze wzrostem rozmiaru listy.

2. Kiedy właściwe jest użycie algorytmu sortowania bąbelkowego?

Algorytm sortowania bąbelkowego sprawdza się w przypadku, gdy lista elementów do sortowania jest mała. Ze względu na złożoność czasową nie zaleca się stosowania tej metody w przypadku dużych zbiorów danych, gdyż dostępne są bardziej wydajne algorytmy.

3. Czy algorytm sortowania bąbelkowego jest stabilny?

Tak, algorytm sortowania bąbelkowego jest stabilnym algorytmem sortowania. Oznacza to, że podczas procesu sortowania zachowywana jest względna kolejność elementów o tych samych kluczach.

4. Jaka jest najlepsza alternatywa dla algorytmu sortowania bąbelkowego?

Wybór najlepszej alternatywy dla algorytmu sortowania bąbelkowego zależy od kontekstu i specyficznych wymagań problemu. Jednak niektóre bardziej wydajne algorytmy, takie jak sortowanie szybkie (quicksort) i sortowanie przez scalanie (mergesort) , są powszechnie stosowane ze względu na ich niższą złożoność czasową.

  Znaczenie wiedzy o tym, do czego służy algorytm w XXI wieku

5. Czy algorytm sortowania bąbelkowego można ulepszyć?

Tak, istnieją warianty i optymalizacje algorytmu sortowania bąbelkowego, takie jak „dwukierunkowe sortowanie bąbelkowe” i „ulepszone sortowanie bąbelkowe”. Te optymalizacje zmniejszają liczbę porównań i liczbę iteracji niezbędnych do posortowania listy.

6. Gdzie mogę znaleźć więcej informacji o algorytmach sortowania?

Więcej informacji na temat algorytmów sortowania można znaleźć w wiarygodnych źródłach, np. w Wikipedii. Oto kilka przydatnych linków:

Wnioski

W tym artykule przyjrzymy się algorytmowi sortowania bąbelkowego w językach programowania C i Java. Poznaliśmy działanie tego algorytmu krok po kroku i zobaczyliśmy jego praktyczne zastosowanie w obu językach. Omówiliśmy również zalety i wady algorytmu sortowania bąbelkowego i przyjrzeliśmy się bardziej wydajnym alternatywom.

Chociaż algorytm sortowania bąbelkowego jest prosty i łatwy do wdrożenia, należy wziąć pod uwagę jego efektywność w przypadku większych zbiorów danych. W takich przypadkach wskazane jest rozważenie zastosowania bardziej wydajnych algorytmów sortowania, takich jak sortowanie przez wstawianie lub sortowanie przez wybieranie.

Mamy nadzieję, że ten artykuł pozwolił Ci lepiej zrozumieć algorytm sortowania bąbelkowego.