Metode Bubble Sort

Metode buble merupakan metode sorting termudah. Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.

Pengurutan Ascending :Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar.

Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar.

Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya, asc atau desc. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya sampai dengan iterasi sebanyak n-1.

Kapan berhentinya?  Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan

Contoh:
Urutkan data dari:
22 10 15 3 8 2


Pengecekan dapat dimulai dari data paling awal atau paling akhir. Pada contoh di bawah ini pengecekan dimulai dari data paling akhir. Data paling akhir dibandingkan dengan data di depannya, jika ternyata lebih kecil maka tukar. Dan pengecekan yang sama dilakukan sampai dengan data yang paling awal.






Kembali data paling akhir di bandingkan dengan data di depannya jika ternyata lebih kecil maka tukar, tetapi kali ini pengecekan di lakukan sampai data paling awal yaitu 2 karena data tersebut pasti merupakan data terkecil (didapat dari hasil pengurutan pada langkah ke 1)






Proses pengecekan pada langkah 3 dst. sama dengan langkah sebelumnya.









sourch code buble sort versi 1
untuk urutan ascending


void bubble_sort(int data[])
{
for (int i=1;i<n;i++)
{
for(int j=n-1;j>=1;j--)
{
if (data[j]<data[j-1])
tukar(&data[j],&data[j-1); //ascending
}
}
}



buble sort versi 2
untuk urutan descending



void bubblesort2(int data[])
{
for (int i=1;i<6;i++)
{
for(int j=0;j<6-1;j++)
{
if (data[j]>data[j+1])
tukar(&data[j],&data[j+1); //descending
}
}
}

Labels: