You are on page 1of 3

Bubble Sort

U ovom tutorijalu emo videti kako radi bubble sort i kako se on implementira u javi za
sortiranje niza celih brojeva.
Bubble sort vai za jedan od najsporijih algoritama za sortiranje niza, to je i razlog njegove
slabe primene u praksi. Iako je spor, zgodan je kada vam treba da na brzinu iskucate neki
algoritam za sortiranje, ili kada radite sa malim nizovima.
Ideja algoritma je da se najvei element polako 'popne' na kraj niza tako to se idui od
poetka niza porede po dva susedna elementa, I ako se dodje do situacije da je vei ispred
manjeg, onda im se zamene mesta. Po tome je algoritam i dobio ime, najvei element se
ponaa kao mehur u vodi koji isplivava na povrinu, tj. na kraj niza. Sada kada imamo je
najvei element na kraju postupak treba primeniti na ostalih n-1 ime dobijamo kompletno
sortiran niz.
Hajde to sada da implementiramo u javi. Napravimo novu metodu koja e biti public,
static, void i nazovite je bubbleSort. Kao parametar treba da prima niz int-ova , koji u
ja nazvati a.
public static void bubbleSort(int[] a) {
}

Prvo treba da prodjemo kroz sve elemente, da gledamo susedne, i ako je prvi vei od
drugog da ih zamenimo. Najlaki, i standardan nain, prolaska kroz ceo niz je sa for
petljom. U njoj emo imati broja j koji e ii od 0 do a.length - 1, i poveavati se za 1.
Iiemo do a.length - 1 a ne samo do a.length zato poslednji elemenat nema iza sebe vie
elemenata, tako da nemamo sa ime da ga poredimo, pa bi nam program imao greku i
pukao bi pri izvravanju.
public static void bubbleSort(int[] a) {
for (int j = 0; j < a.length - 1; ++j) {
}
}

Unutar te for petlje treba da pitamo da li je a[j] vee od a[j + 1] i ako je to tano treba da
im zamenimo mesta. To emo uraditi if naredbom, u kojoj e uslov biti a[j] > a[j + 1].
public static void bubbleSort(int[] a) {
for (int j = 0; j < a.length - 1; ++j) {
if (a[j] > a[j + 1]) {
}
}
}

Copyright Link group

Treba sada da unutar if-a zamenimo elemente na pozicijama a[j] i a[j + 1]. Za to e nam
trebati i jedna pomona promenljiva temp koju emo definisati pre for petlje. Zatim,
unutar if-a promenljivoj temp dodelimo vrednost a[j], a[j] dodelimo vrednost a[j + 1], i
na kraju a[j + 1] dodelimo vrednost temp.
public static void bubbleSort(int[] a) {
int temp;
for (int j = 0; j < a.length - 1; ++j) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}

Dobro, sada smo osigurali da e najvei element biti na kraju niza, ali ta je sa ostalim?
Treba ovaj postupak da ponovimo onoliko puta koliko ima elemenata u nizu, kako bi
osigurali da e se svaki nai na svome mestu. To emo uraditi tako to emo ovu for petlju
koju ve imamo okruiti novom u kojoj e i ii od 0 do a.length - 1, i poveavati se za 1.
Ovde ne moramo ii skroz do a.length zato to se niz sa jednim elementom ve smatra
sortiran, pa njega onda ne moramo dirati vie.
public static void bubbleSort(int[] a) {
int temp;
for (int i = 0; i < a.length; ++i) {
for (int j = 0; j < a.length - 1; ++j) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}

Jedino to moemo da uradimo kako bismo malo ubrzali ovaj algoritam jeste da u
unutranjoj for petlji stavimo ogranienje a.length - i - 1, poto su posle tog indeksa
elementi ve sortirani, pa ne moramo opet da prolazimo kroz njih.
public static void bubbleSort(int[] a) {
int temp;
for (int i = 0; i < a.length; ++i) {
for (int j = 0; j < a.length - i - 1; ++j) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}

Copyright Link group

Saetak
Bubble sort je jedan od najsporijih algoritama za sortiranje i koristi se samo za male nizove
i kada hoete brzo da iskucate neki kod za sortiranje. Radi na principu pomeranja najveeg
elementa na kraj niza i ponavljanja postupka sa prvih n 1 elemenata niza. Algoritam se
moe malo ubrzati tako to unutranja for petlja ne ide do n 1 nego do n i 1.

Dodatak
Izvolite jedan video gde moete videti (i uti) kako zapravo radi bubble sort.
https://www.youtube.com/watch?v=Cq7SMsQBEUw Samo vas savetujem da smanjite zvuk
na raunaru pre nego to ga ukljuite poto je dosta iritantan.

Copyright Link group

You might also like