Buborék rendezés

A buborék rendezés algoritmusához pár beágyazott hurok szükséges. A külső huroknak egyszer meg kell ismételnie az adatkészlet minden elemét (n méretű), míg a belső hurok n-szeresét ismétli az első belépéskor, n-1-szer a másodikat stb. Vegye figyelembe az egyes hurkok célját. Amint azt fentebb kifejtettük, a buborékok rendezése úgy van felépítve, hogy a listán minden egyes lépésnél az adatok következő legnagyobb eleme a megfelelő helyre kerül. Ezért ahhoz, hogy mind az n elem a megfelelő helyre kerüljön, a külső ciklust n-szer kell végrehajtani.

A belső hurok a külső hurok minden iterációjánál végrehajtásra kerül. Célja, hogy a következő legnagyobb elem kerüljön a helyére. A belső hurok tehát összehasonlítja és felcseréli a szomszédos elemeket. A hurok bonyolultságának meghatározásához kiszámoljuk az elvégzendő összehasonlítások számát. A külső hurok első iterációján, miközben megpróbáljuk a legnagyobb elemet elhelyezni, n – 1 összehasonlításnak kell lennie: az első összehasonlítást az első és a második elem, a másodikat a második és a harmadik elem között végezzük, és így addig, amíg az n-1. és az n-edik elem összehasonlításra kerül. A külső hurok második iterációjánál nem kell összehasonlítani a listát a lista utolsó elemével, mert az előző passzon a megfelelő helyre került. Ezért a második iteráció csak n-2 összehasonlítást igényel. Ez a minta a külső hurok utolsó utáni ismétléséig folytatódik, amikor csak a lista első két elemét választják szét; ebben az esetben egyértelműen csak egyetlen összehasonlításra van szükség. Az összehasonlítások teljes száma tehát (n – 1) + (n – 2) … (2) + (1) = n (n – 1) / 2 vagy O (n2).

A buborék-rendezés legjobb esete akkor következik be, ha a lista már rendezve vagy majdnem rendezve van. Abban az esetben, ha a lista már rendezve van, a buborékok rendezése az első iteráció után megszűnik, mivel nem cseréltek. Bármikor, amikor átkerül a listán, és nem történt csere, biztos, hogy a lista rendezve van. A buborékok rendezése akkor is hatékony, ha egy véletlenszerű elemet rendezett listába kell rendezni, feltéve, hogy az új elem az elején, és nem a végén helyezkedik el. Ha az elején helyezi el, akkor egyszerűen a megfelelő helyre buborékol fel, és a lista második iterációja 0 csereügyletet eredményez, ezzel véget ér a rendezés. Emlékezzünk arra, hogy ha a véletlenszerű elemet a végén helyezzük el, akkor a buborék-rendezés elveszíti hatékonyságát, mert minden elemnél nagyobbnak kell buborékolnia egészen a csúcsáig. A lista legkisebb eleme a végén található. Mivel minden egyes iterációban csak a legnagyobb rendezetlen elem kerül a megfelelő helyre, amikor a legkisebb elem a végén van, akkor minden egyes alkalommal át kell cserélni a listán, és a lista elejére nem kerül, amíg az összes n iterációk történtek. Ebben a legrosszabb esetben n / 2 csere n ismétlése szükséges, így a sorrend megint n2.

Legjobb eset: nAverage Case: n2Worst Case: n2

Leave a Reply

Vélemény, hozzászólás?

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