Bubble sort adalah algoritma sorting yang mengiterasi dan membandingkan pasangan elemen, mengubah posisi elemen yang lebih besar ke belakang. Prosesnya melakukan pembandingan dan pertukaran posisi berulang sampai tidak ada lagi yang perlu ditukar. Kompleksitas waktunya adalah O(n2) pada kasus terburuk.
2. Pendahuluan
Sesuai dengan namanya, bubble sort membuat elemen
yang dibandingkan berlaku seperti gelembung atau
dinaikkan.
Metode sorting mengiterasi dan mebandingkan 2 elemen
setiap iterasi dan mengubah posisi elemen yang
dibandingkan dimana elemen yang lebih besar akan
ditukar posisinya ke indeks yang lebih akhir.
5. Proses - 3
2 5 1 6 7 4 3 8 → Mulai lagi dari awal
→ Perhatikan bahwa
kotak yang tebal sudah
terurut
→ lakukan sampai semua
terurut
2 1 5 6 4 3 7 8
1 2 3 4 5 6 7 8
6. Pseudocode
procedure bubbleSort( Input/Output A : list of sortable items )
n = length(A)
repeat
swapped = false
for (i = 0 to n-1) do /* elemen pertama memiliki indeks 0 */
begin
/* jika pasangan tidak sesuai */
if A[i-1] > A[i] then
begin
/* tukar posisinya dan nilai swap diingat menjadi true */
swap( A[i-1], A[i] )
swapped = true
end
end
until not swapped /* lakukan sampai tidak ada yang ingin ditukar */
7. Contoh Kode C++
void bubbleSort(int arr[], int size) {
bool not_sorted = true;
int j=1,tmp;
while (not_sorted) {
not_sorted = false;
j++;
for (int i = 0; i < size - j; i++) {
if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
not_sorted = true;
} // selesai proses tukar
print_array(arr,5); // cetak array
}
}
}
8. Contoh Kode C++ - lanjut
#include <iostream>
#include <array>
using namespace std;
void print_array(int array[], int size) {
cout << "langkah bubble sort: ";
int j;
for (j=0; j<size;j++)
cout <<" "<< array[j];
cout << endl;
} //end of print_array
9. Contoh Kode C++ - lanjut 2
int main() {
int arrBil[5] = {3,5,2,1,4};
bubbleSort(arrBil, 5); // akan menanmpilkan hasil bubble sort
// dengan print array tiap langkah
return 0;
}