Bubble Sort
Pengertian
Bubble Sort
Bubble Sort adalah salah satu algoritma untuk sorting
data, atau kata lainnya mengurutkan data dari yang terbesar ke yang terkecil
atau sebaliknya (Ascending atau Descending).
Bubble sort (metode gelembung) adalah metode/algoritma
pengurutan dengan dengan cara melakukan penukaran data dengan tepat
disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi
tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah
terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan
lambat menggelembung ke posisinya yang tepat.
Metode pengurutan
gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada
dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat
jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di
atas dipakai pada pengurutan gelembung. Ini termasuk dalam golongan algoritma comparison sort, karena menggunakan
perbandingan dalam operasi antar elemennya. Berikut ini adalah gambaran dari
algoritma bubble sort. Misalkan kita mempunyai sebuah array dengan. Elemen-elemen “4 2 5 3 9”. Proses yang akan
terjadi apabila digunakan algoritma bubblesort adalah sebagai berikut.
Algoritma bubble sort adalah salah satu algoritma
pengurutan yang paling simple, baik dalam hal pengertian maupun penerapannya.
Ide dari algoritma ini adalah mengulang proses pembandingan antara tiap-tiap
elemen array dan menukarnya apabila urutannya salah. Pembandingan elemen-elemen
ini akan terus diulang hingga tidak perlu dilakukan penukaran lagi. Algoritma
Pass pertama
(4 2 5 3 9) menjadi (2 4 5 3 9)
(2 4 5 3 9) menjadi (2 4 5 3 9)
(2 4 5 3 9) menjadi (2 4 3 5 9)
(2 4 3 5 9) menjadi (2 4 3 5 9)
Pass kedua
(2 4 3 5 9) menjadi (2 4 3 5 9)
(2 4 3 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
Pass ketiga
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
Dapat dilihat pada proses di atas, sebenarnya pada
pass kedua, langkah kedua, array telah terurut. Namun algoritma tetap
dilanjutkan hingga pass kedua berakhir. Pass ketiga dilakukan karena definisi
terurut dalam algoritma bubblesort adalah tidak ada satupun penukaran pada
suatu pass, sehingga pass ketiga dibutuhkan untuk memverifikasi keurutan array
tersebut.
Algoritma Bubble Sort
1.Membandingkan data
ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar
(data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak
sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan
ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya
untuk urutan descending (A-Z).
2.Membandingkan data
ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data
terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
3.Selesai satu iterasi,
adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah
selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan
aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
4. Proses akan berhenti
jika tidak ada pertukaran dalam satu iterasi.
Contoh Kasus Bubble Sort :
Misalkan
kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini
(ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang
terjadi:
Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada
3 pertukaran)
Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada
2 pertukaran)
Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada
1 pertukaran)
Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada
0 pertukaran) -> proses selesai
Kelebihan dan Kelemahan Bubble Sort
Kelebihan :
· Metode Buble Sort merupakan metode yang paling simpel
·
Metode Buble Sort
mudah dipahami algoritmanya
Meskipun simpel metode Bubble sort
merupakan metode pengurutan yang paling tidak efisien. Kelemahan
buble sort adalah pada saat mengurutkan data yang sangat besar akan
mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup
signifikan ketika data yang diolah jika data cukup banyak. Kelemahan lain
adalah jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya
sudah cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap
data yang lain untuk menentukan posisinya.
Contoh program Bubble Sort :
#include <iostream.h>
#include <conio.h>
#define array 100
int data[array];
int n;
void tukar(int a, int b);
void bubble_sort();
//main
void main()
{
cout<<"===*PROGRAM BUBBLE SORT*==="<<endl;
cout<<"Nama : Sekar Sari Wiradarma"<<endl;
cout<<"NIM : 09031281320004"<<endl;
cout<<"Kelas: Sistem Informasi 2B"<<endl;
//Input Data
cout<<"\nMasukkan Jumlah Data : ";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"\nMasukkan data ke "<<i<<" : ";
cin>>data[i];
}
//tampilan data sebelum mengalami pengurutan
cout<<"\nData sebelum mengalami pengurutan : "<<endl;
for(i=1;i<=n;i++)
{
cout<<data[i]<<" ";
}
//memanggil fungsi buble sort
bubble_sort();
cout<<"\n\n";
//tampilkan data
cout<<"Data Setelah diurutkan : ";
for(i=1; i<=n; i++)
{
cout<<" "<<data[i];
}
cout<<"\n\nSorting Selesai\n\n";
}
//fungsi tukar
void tukar(int a, int b)
{
int temp;
temp = data[b];
data[b] = data[a];
data[a] = temp;
}
//fungsi buble sort
void bubble_sort()
{
for(int i=1;i<=n;i++)
{
for(int j=n; j>=i; j--)
{
if(data[j] < data[j-1]) tukar(j,j-1);
}
}
}
#include <conio.h>
#define array 100
int data[array];
int n;
void tukar(int a, int b);
void bubble_sort();
//main
void main()
{
cout<<"===*PROGRAM BUBBLE SORT*==="<<endl;
cout<<"Nama : Sekar Sari Wiradarma"<<endl;
cout<<"NIM : 09031281320004"<<endl;
cout<<"Kelas: Sistem Informasi 2B"<<endl;
//Input Data
cout<<"\nMasukkan Jumlah Data : ";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"\nMasukkan data ke "<<i<<" : ";
cin>>data[i];
}
//tampilan data sebelum mengalami pengurutan
cout<<"\nData sebelum mengalami pengurutan : "<<endl;
for(i=1;i<=n;i++)
{
cout<<data[i]<<" ";
}
//memanggil fungsi buble sort
bubble_sort();
cout<<"\n\n";
//tampilkan data
cout<<"Data Setelah diurutkan : ";
for(i=1; i<=n; i++)
{
cout<<" "<<data[i];
}
cout<<"\n\nSorting Selesai\n\n";
}
//fungsi tukar
void tukar(int a, int b)
{
int temp;
temp = data[b];
data[b] = data[a];
data[a] = temp;
}
//fungsi buble sort
void bubble_sort()
{
for(int i=1;i<=n;i++)
{
for(int j=n; j>=i; j--)
{
if(data[j] < data[j-1]) tukar(j,j-1);
}
}
}
Output :
No comments:
Post a Comment