Bubble sort adalah sederhana algoritma sorting. Bekerja dengan berulang kali melakukan melalui daftar akan di sortir, membandingkan dua item sekaligus dan swapping mereka jika mereka berada di salah pesanan. Yang melewati daftar diulang sampai swap tidak diperlukan, yang menunjukkan bahwa daftar disaring. Algoritma yang mendapatkan namanya dari jalan kecil elemen "gelembung" ke bagian atas daftar. Karena hanya menggunakan perbandingan untuk beroperasi pada elemen, ia adalah perbandingan menyortir.
Metode Bubble Sort
Perhatikan bahwa jumlah pertukaran dan perbandingan data tidaklah tetap, perbedaan tergantung pada keadaan awal data setelah diacak. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode bubble sort.
Pengacakan | Jumlah Total | |
Pertukaran Data | Perbandingan Data | |
1 | 155 | 279 |
2 | 127 | 272 |
3 | 137 | 245 |
4 | 142 | 297 |
5 | 151 | 294 |
6 | 138 | 285 |
7 | 178 | 300 |
8 | 165 | 272 |
9 | 156 | 285 |
10 | 175 | 300 |
Rata-rata | 152 | 283 |
Jumlah rata-rata pertukaran untuk 10 kali pengacakan adalah 152 kali, sedangkan rata-rata jumlah perbandingan adalah sebanyak 283 kali. Tetapi bila data pada awalnya terurut, maka untuk 25 jumlah data, jumlah pertukaran data sebanyak 0 kali dengan jumlah perbandingan sebanyak 24 kali.
contoh program
#include <cstdlib>
#include <iostream>
using namespace std;
void tampilkan_larik(int data[], int n){
int i;
for (i = 0; i < n; i++)
cout << data[i] << " ";
cout << "\n";
}
void bubble_sort(int data[], int n){
int tahap, j, temp;
int ada_penukaran;
tahap = 1;
ada_penukaran = 1;
while (tahap < n-1 && ada_penukaran){
ada_penukaran = 0;
for (j = 0; j<n-tahap; j++)
if (data[j] > data[j+1]){
ada_penukaran = 1;
temp = data[j];
data[j] = data[j+1];
data[j+1]=temp;
}
cout << "Tahap" << tahap << ":";
tampilkan_larik(data, n);
tahap++;
}
}
int main()
{
char JUM_DATA = 6;
int i;
int data[] = {6,3,10,2,9,7};
bubble_sort(data, JUM_DATA);
cout<<"Tampilan Hasil pengurutan:\n";
tampilkan_larik(data, JUM_DATA);
system("PAUSE");
return EXIT_SUCCESS;
}