Algoritma Buble Sort di C++


Bagus Koko Wibawanto

10 Agustus 2023

Ketika kita ingin mengurutkan nilai dari sebuah array, sebenarnya kita bisa menggunakan function "sort()" di C++, tapi kayaknya kurang seru kalo pake built-in function. Sebenarnya kita bisa membuat sendiri function sort() dengan menggunakan Algoritma Buble Sort. Oh iya ini saya menggunakan C++, seharusnya bisa di bahasa pemrograman yang lain, karena algoritmanya gak khusus untuk C++.


Kita bahas dulu untuk algoritma buble sort yak...


Algoritma Buble Sort sederhananya adalah algoritma yang cara kerjanya adalah membandingkan 2 nilai dan nilai yang paling kecil akan dipindah ke paling kiri sehingga menjadi nilai yang urut.

Pada 2 gambar di atas, ada nilai "5 4 3 6 2 7" (tidak urut), dengan menggunakan algoritma buble sort ini maka nilai 5 akan dibandingkan dengan nilai 4. Nilai 4 tentu lebih kecil dari nilai 5, maka dari itu 4 akan digeser ke kiri. Dan lanjut seperti itu sampai looping yang pertama menghasilkan urutan nilai baru "4 3 5 2 6 7". Itu dilakukan terus sampai hasil terakhir menghasilkan nilai yang urut "2 3 4 5 6 7".


Kayaknya di teori harusnya cepet maksud karena algoritmanya sederhana, mendingan kita bahas sekalian juga untuk kodenya.


#include <iostream>

void bubleSort(int myarray[], int n) {
        int temp;
        for (int i = 0; i < n; i++) {
                for (int j = 0; j < n - 1; j++) {
                        if (myarray[j] > myarray[j + 1]) {
                                temp = myarray[j];
                                myarray[j] = myarray[j + 1];
                                myarray[j + 1] = temp;
                        }
                        std::cout << myarray[j] << " ";
                }
                std::cout << "\n";
        }
}


void printArray(int myarray[], int n) {
        for (int i = 0; i < n; i++) {
                std::cout << myarray[i] << " ";
        }
        std::cout << "\n";
}


int main() {
        int myarray[6] = {5, 4, 3, 6, 2, 7};
        int n = sizeof(myarray) / sizeof(myarray[0]);

        bubleSort(myarray, n);
        printArray(myarray, n);

        return 0;
}

					

Pada kode di atas, ada 3 function yaitu bubleSort(), printArray(), dan juga main(). Function bubleSort() saya buat untuk implementasi algoritmanya, function printArray() digunakan untuk melakukan print, dan function main() adalah function utama, jadi saya akan manggil function bubleSort() dan juga printArray() di dalamnya.


Bagian function main() ada array "myarray" dengan panjang 6 dan dia manyimpan nilai yang masih belum urut "5, 4, 3, 6, 2, 7". Variable "n" punya nilai dari pembagian size array yaitu size dari "myarray (24)" dan juga "myarray[0] (4)". Jadi nilai 24 / 4 hasilnya adalah 6. Artinya variable "n" akan punya nilai 6.

Pada function bubleSort() ada 2 looping, looping ke-1 digunakan untuk mayor looping (anggap aja seperti halaman di buku) dan looping ke-2 digunakan untuk minor looping. Jadi looping ke-1 akan dijalankan ketika kondisinya true maka akan dilanjutkan looping minor, dan nantinya jika looping minor kondisinya sudah selesai maka looping ke-1 jalan lagi. Begitu terus sampai looping mayor kondisinya udah gak terpenuhi.

Di looping yang ke-2, saya buat kondisinya agar kurang dari (n - 1 / 6 - 1 = 5). Jadi hanya sampai kurang dari 5 ( < 5). Jadi nilai yang menempati index ke-5 tidak akan dibandingkan karena index ke-5 sudah paling akhir.


Di dalam looping minor ada if statement, Anggap aja ini perulangan minor dari awal (0). jadi ketika index array ke-0 lebih besar dari index array ke-1 maka nilai index array ke-0 akan disimpan sementara di variable "temp", lalu index array ke-0 akan diganti nilainya dengan nilai dari index array ke-1, dan terakhir index array ke-1 akan diganti nilainya dengan nilai dari variable temp.

Jadi nilai 4 dan 5 saling tukar posisi index seperti pada gambar di atas.


Yang terakhir function printArray() digunakan untuk melakukan print array, jadi function ini akan ngebaca index ke-0 sampai ke-5 pakai looping. Dan ngebacanya dari array yang sudah melewati function bubleSort(). Hasil output akan seperti ini.

Dah ges segitu aja :)