PENGERTIAN BUBLE SORT
Pengertian/Konsep Buble Sort
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.
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.
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.
Kelebihan Bubble Sort
- Metode
Buble Sort merupakan metode yang paling simpel
- Metode
Buble Sort mudah dipahami algoritmanya
Kelemahan Bubble Sort
Meskipun
simpel metode Bubble sort merupakan metode pengurutanyang 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.
Algoritma Bubble Sort
- 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).
- 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.
- 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.
- 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
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
Analisis Algoritma Bubble Sort
Tujuan
dari analisis algoritma adalah untuk mengetahui efisiensi dari
algoritma. Dalam hal ini dilakukan pembandingan antara dua atau lebih algoritma
pengurutan.Tahap analisis adalah melakukan pengecekan program untuk memastikan
bahwa program telah benar secara logika maupun sintak (tahap tracing atau
debugging). Tahap selanjutnya yaitu menjalankan program untuk mengetahui
running time atau waktu komputasi dalam hal ini
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
Salah satu cara untuk menganalisa kecepatan algoritma sorting saat running time adalah dengan menggunakan notasi Big O. Algoritma sorting mempunyai kompleksitas waktu terbaik, terburuk, dan rata-rata. Dengan notasi Big O, kita dapat mengoptimalkan penggunaan algoritma sorting. Sebagai contoh, untuk kasus dimana jumlah masukan untuk suatu pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge sort, atau heap sortkarena kompleksitas waktu untuk kasuk terburuk adalah O(n log n). Hal ini tentu akan sangatberbeda jika kita menggunakan algoritma sorting insertion sort atau bubble sort dimana waktu yang dibutuhkan untuk melakukan pencarian akan sangat lama. Hal ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting tersebut dengan jumlah masukan yang banyak adalah O(n2).
Dari grafik dibawah dapat diketahui buble sort adalah metode yang paling lambat dari yang lambat-lambat..heheheh..
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
Salah satu cara untuk menganalisa kecepatan algoritma sorting saat running time adalah dengan menggunakan notasi Big O. Algoritma sorting mempunyai kompleksitas waktu terbaik, terburuk, dan rata-rata. Dengan notasi Big O, kita dapat mengoptimalkan penggunaan algoritma sorting. Sebagai contoh, untuk kasus dimana jumlah masukan untuk suatu pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge sort, atau heap sortkarena kompleksitas waktu untuk kasuk terburuk adalah O(n log n). Hal ini tentu akan sangatberbeda jika kita menggunakan algoritma sorting insertion sort atau bubble sort dimana waktu yang dibutuhkan untuk melakukan pencarian akan sangat lama. Hal ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting tersebut dengan jumlah masukan yang banyak adalah O(n2).
Dari grafik dibawah dapat diketahui buble sort adalah metode yang paling lambat dari yang lambat-lambat..heheheh..
Grafik Metode Pengurutan berode O(n2)
Implementasi Bubble Sort dalam Bahasa C/C++
Berikut
ini listing program atau kode program metode bubble sort
dalam bahasa C/C++
#include<stdio.h>
void bubbleSort(int
data[], int n){
int i, j=0, temp, flag
= 1;
while(flag){
flag = 0;
for(i=0; i<n; i++){
if(data[i]>data[i+1]){
temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
flag++;
}
}
}
}
main(){
int data[1000];
int n, i;
printf("________.::
BUBBLE SORT :.________\n");
printf("Enter
numbers of data(maks 1000): ");
scanf("%d",
&n);
printf("Data
(separate by space): ");
for(i=0; i<n; i++)
scanf("%d",
&data[i]);
bubbleSort(data, n);
printf("\nOutput
after sort:\n");
for(i=0; i<n; i++)
printf("%d
", data[i]);
getch();
return 0;}

Tidak ada komentar:
Posting Komentar