Buborékrendezési algoritmus C, Java és Python nyelven

Utolsó frissítés: 30 november 2025
  • Egy egyszerű és stabil algoritmus, amely szomszédos elemek összehasonlításával és felcserélésével rendez, ideális az alapok elsajátításához.
  • Komplexitása O(n^2), így nagy halmazon nem hatékony, és sok felesleges összehasonlítást végez.
  • Bemutatták a C, Java és Python nyelvű megvalósítását; nagyobb adathalmazok esetén léteznek hatékonyabb alternatívák, mint például a gyorsrendezés és az egyesítés (mergesort).
Buborékos rendezési algoritmus

A buborékos rendezési algoritmus az egyik legegyszerűbb és legalapvetőbb algoritmus, amelyet a lista elemeinek rendezésére használnak. Egyszerűsége miatt kiváló választás a rendezési algoritmusok alapfogalmainak megértéséhez. Ezt az algoritmust általában olyan alkalmazásokban és programokban használják, ahol kicsi a rendezendő elemek száma.

Ebben a cikkben a buborékrendezési algoritmus két népszerű programozási nyelven, a C-ben és a Java-ban történő megvalósítására összpontosítunk . Megvizsgáljuk az algoritmus mindkét nyelven történő megvalósításához szükséges lépéseket, elemezzük a forráskódot és részletes magyarázatokat adunk.

Buborékos rendezési algoritmus C és Java nyelven

A buborékos rendezési algoritmus, ahogy a neve is sugallja, úgy működik, hogy összehasonlítja a szomszédos elemek párjait egy listában, és cserét hajt végre, ha azok rossz sorrendben vannak. Ezt a folyamatot addig ismételjük, amíg a lista teljesen rendeződik.

Hogyan működik a buborékos rendezési algoritmus C és Java nyelven?

A buborékos rendezési algoritmus az elemek rendezésének egyszerű, de hatékony megközelítését követi. Az algoritmus általános működése az alábbiakban látható:

  1. Kezdjük a tételek rendezetlen listájával.
  2. Iterálunk a listán, összehasonlítva a szomszédos elemek minden párját.
  3. Ha az elemek rossz sorrendben vannak, akkor felcseréljük őket.
  4. Addig folytatjuk az iterációt a listán, amíg az teljesen rendeződik.
  5. Az iterációs folyamatot annyiszor ismételjük meg, ahányszor szükséges, amíg nem történik több csere egy teljes lépésben.

Buborékos rendezési algoritmus megvalósítása C-ben

Az alábbiakban bemutatjuk a buborékrendezési algoritmus C nyelven történő megvalósítását :

#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;
}

Ebben a buborékalgoritmus kódban definiáltunk egy ún bubbleSort amely egy tömböt és annak méretét veszi paraméternek. A függvény a buborékok rendezési algoritmusát két hurok segítségével hajtja végre for. Az első hurok for ismétlődik a tömb elemein és a második cikluson for végezze el a szükséges összehasonlításokat és cseréket.

  MergeSort algoritmus C és Java nyelven

Végül a függvényben main, létrehoztunk egy példatömböt és kiszámítottuk a méretét. Ezután hívjuk a függvényt bubbleSort argumentumként adjuk át a tömböt és annak méretét. Végül a rendezett tömböt nyomtatjuk ki a képernyőre.

Buborékos rendezési algoritmus megvalósítása Java nyelven

Az alábbiakban bemutatjuk a buborékrendezési algoritmus Java nyelven való megvalósítását:

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));
    }
}

Ebben a kódban egy osztályt definiáltunk BubbleSort. Ezen az osztályon belül deklaráltunk egy statikus metódust, az úgynevezett bubbleSort amely egy tömböt vesz paraméternek. A módszer bubbleSort végrehajtja a buborék rendezési algoritmust két hurok segítségével for, akárcsak a C megvalósításban.

A módszerben main, létrehoztunk egy példatömböt, és elhívtuk a metódust bubbleSort a tömb átadása argumentumként. Végül használjuk Arrays.toString(array) a rendezett tömb kinyomtatásához a konzolra.

Buborékrendezési algoritmus megvalósítása Pythonban

A Python buborékrendezési algoritmus megfelelője:

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)


 

A buborékos rendezési algoritmus előnyei

A buborék-rendezési algoritmusnak van néhány előnye, például:

  1. nyugalom: A buborékos rendezési algoritmus könnyen érthető és megvalósítható. Nem igényel bonyolult ismereteket, és kezdők számára is megfelelő a programozásban.
  2. Alacsony kód komplexitás: A buborékrendezési algoritmus megvalósításához szükséges kód viszonylag rövid és tömör. Ez gyors lehetőséget kínál kis számú tétel rendezésére.

A buborékos rendezési algoritmus hátrányai

Az egyszerűsége ellenére a buborékrendezési algoritmusnak van néhány hátránya is:

  1. Hatékonyság nagy adathalmazoknál: A buborékos rendezési algoritmus nem hatékony a végrehajtási idő szempontjából, ha nagy adatkészletekkel foglalkozik. Időbonyolultsága O(n^2), ami azt jelenti, hogy az adatkészlet méretének növekedésével a végrehajtási idő gyorsan növekszik.
  2. Összehasonlítások száma: A buborékos rendezési algoritmus nagyszámú összehasonlítást hajt végre, még akkor is, ha a tömb már rendezve van. Ez a teljesítmény és az erőforrások szükségtelen elvesztéséhez vezethet.
  A hash keresési módszer: teljes útmutató

A buborék-rendezési algoritmus alternatívái

Ahogy az adatkészletek egyre nagyobbak és összetettebbek lesznek, fontos, hogy a buborékrendezési algoritmus hatékonyabb alternatíváit fontoljuk meg. Néhány népszerű alternatíva:

  1. Beszúrás rendezési algoritmus: Ez az algoritmus felosztja a listát egy rendezett részre és egy rendezetlen részre, és a rendezetlen rész minden elemét a megfelelő helyre illeszti be a rendezett részen belül. A legrosszabb esetben O(n^2) időbonyolultságú, de a legtöbb esetben hatékonyabb, mint a buborék-rendezési algoritmus.
  2. Kiválasztási rendezési algoritmus: Ez az algoritmus felosztja a listát egy rendezett részre és egy rendezetlen részre, és ismételten kiválasztja a legkisebb elemet a rendezetlen részből, és a rendezett rész végére helyezi. A legrosszabb esetben O(n^2) időbonyolultságú, de a legtöbb esetben hatékonyabb is, mint a buborékrendezési algoritmus.

Buborék algoritmus GYIK

1. Mekkora a buborék rendezési algoritmus időbeli összetettsége?

A buborék rendezési algoritmus időbeli összetettsége O(n^2), ahol „n” a rendezendő elemek száma. Ez azt jelenti, hogy az algoritmus futási ideje négyzetesen növekszik a lista méretének növekedésével.

2. Mikor célszerű a buborékrendezési algoritmust használni?

A buborékos rendezési algoritmus akkor megfelelő, ha a rendezendő elemek listája kicsi. Időbeli összetettsége miatt nem ajánlott nagy adathalmazokon használni, mivel hatékonyabb algoritmusok állnak rendelkezésre.

3. Stabil-e a buborékrendezési algoritmus?

Igen, a buborékos rendezési algoritmus egy stabil rendezési algoritmus. Ez azt jelenti, hogy a rendezési folyamat során fenntartja az elemek egymáshoz viszonyított sorrendjét egyenlő kulcsokkal.

4. Mi a legjobb alternatíva a buborék-rendezési algoritmushoz?

A buborékos rendezési algoritmus legjobb alternatívájának kiválasztása a kontextustól és a probléma konkrét követelményeitől függ. Azonban néhány hatékonyabb algoritmus, mint például a gyorsrendezés és az egyesítés-rendezés , széles körben elterjedt az alacsonyabb időbonyolultságuk miatt.

  Reflection AI: Mi ez, hogyan működik, és miért vonz ekkora tőkét

5. Javítható-e a buborék-rendezési algoritmus?

Igen, a buborékrendezési algoritmusnak vannak változatai és optimalizálásai, például „kétirányú buborékrendezés” és „javított buborékrendezés”. Ezek az optimalizálások csökkentik az összehasonlítások és a lista rendezéséhez szükséges iterációk számát.

6. Hol találok több információt a rendezési algoritmusokról?

A rendezési algoritmusokról további információkat találhat megbízható forrásokban, például a Wikipédiában. Íme néhány hasznos link:

Következtetés

Ebben a cikkben a buborékrendezési algoritmust vizsgáltuk meg C és Java programozási nyelveken. Lépésről lépésre megtanultuk ennek az algoritmusnak a működését, és mindkét nyelven láthattuk a gyakorlati megvalósítását. Megvitattuk a buborékrendezési algoritmus előnyeit és hátrányait is, és megvizsgáltuk a hatékonyabb alternatívákat.

Míg a buborékos rendezési algoritmus egyszerű és könnyen megvalósítható, fontos figyelembe venni a hatékonyságát nagyobb adathalmazokon. Ilyen esetekben célszerű megfontolni a hatékonyabb rendezési algoritmusokat, például a beszúrásos rendezést vagy a kiválasztási rendezést.

Reméljük, hogy ez a cikk alapos ismereteket adott a buborékrendezési algoritmusról.