Bubble Sort Algorithm (Magyar)

A Bubble Sort egy egyszerű algoritmus, amelyet a elemek tömb formájában, n elemek számával. A Bubble Sort az összes elemet egyesével hasonlítja össze, és értékeik alapján rendezi őket.

Ha az adott tömböt növekvő sorrendbe kell rendezni, akkor a buborék rendezése a tömb első elemének összehasonlításával kezdődik. a második elem, ha az első elem nagyobb, mint a második elem, akkor mindkét elemet felcseréli, majd folytatja a második és a harmadik elem összehasonlítását, és így tovább.

Ha összesen van n elemeket, akkor ezt a folyamatot meg kell ismételnünk n-1 alkalommal.

Buborékfajta néven ismert, mert minden teljes iterációval az adott tömb legnagyobb eleme az utolsó hely vagy a legmagasabb index felé buborékol, akárcsak egy vízbuborék emelkedik fel a víz felszínére.

A válogatás úgy történik, hogy végig lépünk az összes tömbön. az elemeket egyenként, összehasonlítva a szomszédos elemmel, és szükség esetén felcserélve őket. Első lépésként ismerje meg a rendezés alapjairól szóló tudnivalókat.

A Bubble Sort Algorithm megvalósítása

Az alábbiakban bemutatjuk a buborékok rendezésének lépéseit (egy adott tömb rendezéséhez növekvő sorrendben):

  1. Az első elemmel (index = 0) kezdve hasonlítsa össze az aktuális elemet a tömb következő elemével.
  2. Ha az aktuális elem nagyobb, mint a következő elem a tömbből, cserélje fel őket.
  3. Ha az aktuális elem kevesebb, mint a következő elem, lépjen a következő elemre. Ismételje meg az 1. lépést.

Vizsgáljuk meg a {5, 1, 6, 2, 4, 3}

értékeket tartalmazó tömböt annak ábrázolása, hogy a buborék rendezése hogyan rendezi az adott tömböt.

Tehát, amint a fenti ábrán láthatjuk, a az első iteráció, 6 az utolsó indexhez kerül, ami a számára megfelelő pozíció.

Hasonlóan a második iteráció után, 5 a második utolsó indexnél lesz, és így tovább.

Ideje megírni a kódot buborék rendezéshez:

Bár a fenti logika rendezni fogja a nem rendezett tömböt, a fenti algoritmus mégsem hatékony, mert a fenti logika szerint a külső for loop akkor is végrehajtja a 6 ismétlést, ha a tömb rendezésre kerül a második iteráció után.

Tehát egyértelműen optimalizálhatjuk algoritmusunkat.

Optimalizált buborék rendezési algoritmus

A buborékunk optimalizálása A rendezési algoritmus segítségével bevezethetünk egy flag elemet annak figyelemmel kísérésére, hogy az elemek felcserélődnek-e a belső for hurokban.

Ezért a belső for ciklusban mindig ellenőrizzük, hogy az elemek cseréje megtörténik-e vagy sem.

Ha egy adott iterációnál nem történt cserélés hely azt jelenti, hogy a tömb rendezésre került, és kiugorhatunk a for ciklusból, ahelyett, hogy az összes iterációt végrehajtanánk.

Vegyük fontolóra egy tömböt értékekkel {11, 17, 18, 26, 23}

Az alábbiakban bemutatjuk egy képi ábrázolást arról, hogy az optimalizált buborék-rendezés hogyan rendezi az adott tömböt.

Mint láthatjuk, az első iterációban cserére került sor, ezért az flag értéket 1, ennek eredményeként a végrehajtás ismét belép a for ciklusba. De a második iterációban nem történik csere, ezért az flag értéke megmarad 0, és a végrehajtás kitör a ciklusból.

A fenti kódban a bubbleSort függvényben, ha j iteráció egyetlen teljes ciklusa (belső for hurok), nem történik cserélés, majd flag marad 0, majd kitörünk a for hurokból, mert a tömb már rendezve van.

A buborékok rendezésének összetettség-elemzése

A buborék-rendezésnél az n-1 összehasonlításokat az 1. lépésben kell elvégezni, n-2 a 2. menetben, n-3 a 3. menetben és így tovább. Tehát az összehasonlítások teljes száma a következő lesz:

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

Ezért a Bubble Sort időbeli összetettsége O (n2).

A Bubble Sort fő előnye az algoritmus egyszerűsége.

A Bubble Sort térbeli összetettsége O (1), mert csak egyetlen további memóriaterületre van szükség, azaz a temp változóhoz.

Ezenkívül a legjobb esetben az idő összetettsége O (n) lesz, amikor a lista már rendezve van.

Az alábbiakban a Bubble Sort algoritmus idő és tér összetettségét mutatjuk be.

Most, hogy megtanultuk a Bubble sort algoritmust, megnézheti ezeket a rendezési algoritmusokat és alkalmazásukat is:

  • Insertion Sort
  • Selection Sort
  • Gyors rendezés
  • Rendezés egyesítése
  • Halom rendezés
  • Rendezés számlálása

Write a Comment

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük