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.Jika elemen sekarang lebih besardari elemen berikutnya
maka kedua elemen tersebut ditukar (untuk pengurutan ascending).
Jika
elemen sekarang lebih kecildari elemen berikutnya, maka kedua elemen
tersebut ditukar (untuk pengurutan descending).Algoritma ini seolah-olah
menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan,
tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka
bubble sort akan mengulangi proses, demikianseterusnya.
Bubble
sort berhenti jika seluruh array telah diperiksa dan tidak ada
pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah
diinginkan.
Contoh pengurutan data yang dilakukan dengan metode Bubble Sort sebagai berikut:
Proses 1:
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8
Pengecekandimulaidari
data yang paling akhir, kemudiandibandingkandengan data di depannya,
jika data di depannyalebihbesarmakaakanditukar.
Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8
Pengecekandilakukansampaidengan data ke-2 karena data pertamapastisudah paling kecil.
Proses 3:
2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15
Proses 4:
2 3 8 22 10 15
2 3 8 22 10 15
2 3 8 10 22 15
Proses 5:
2 3 8 10 22 15
2 3 8 10 15 22
Pengurutan berhenti.
berikut programnya c++ bubble sort:
#include <conio.h>
#include <stdlib.h>
bubble_acak()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
srand(time(NULL));
for (i=0; i<x; i++)
arr[i] = rand() %1000;
//output nilai" array
clrscr();
cout<<"====== array ======"<<endl<<endl;
cout<<"angka angkanya :"<<endl;
for (i=0; i<x; i++)
cout<<arr[i]<<", ";
//sorting
cout<<endl<<endl<<endl<<endl;
cout<<"====== sorting ======"<<endl<<endl;
s = 0;
for (s=0; s<x; s++)
{
for (t = s+1; t<x; t++)
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<<endl;
for (i=0; i<x; i++)
cout<<arr[i]<<", ";
getch();
}
bubble_manual()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
for (i=0; i<x; i++)
{
cout<<"masukkan angka ke-"<<i<<" : ";
cin>>arr[i];
}
//output nilai" array
clrscr();
cout<<"====== array ======"<<endl<<endl;
cout<<"angka angkanya :"<<endl;
for (i=0; i<x; i++)
cout<<arr[i]<<", ";
//sorting
cout<<endl<<endl<<endl<<endl;
cout<<"====== sorting ======"<<endl<<endl;
s = 0;
for (s=0; s<x; s++)
{
for (t = s+1; t<x; t++)
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<<endl;
for (i=0; i<x; i++)
cout<<arr[i]<<", ";
//mission complete
getch();
}
main ()
{
int pilih;
char ulang;
do
{
clrscr ();
cout<<"tekan 1 : bilangan yang disorting dimasukan secara acak"<<endl;
cout<<"tekan 2 : bilangan yang disorting dimasukan secara manual"<<endl;
cout<<"masukkan pilihan : "; cin>>pilih;
switch (pilih)
{
case 1:
bubble_acak();
break;
case 2:
bubble_manual();
break;
default:
clrscr();
cout<<"\"maaf\""<<endl;
cout<<"\"pilihan yang dimasukkan salah\"";
break;
}
cout<<endl<<endl<<"tekan \"Y\" lalu \"ENTER\" untuk ulang ---> "; cin>>ulang;
}
while (ulang=='Y');
}