Friday, July 7, 2017

Kupas Tuntas Algoritma Pengurutan Apung (Bubble Sort)

Algoritma pengurutan Apung (bubble sort) diinspirasi oleh gelembung sabun yang berada diatas permukaan air. Untuk mendapatkan data larik yang terurut menaik, loka dari algoritma pengurutan apung secara global sebagai berikut:

Untuk setiap pass i = 1, 2, … , n-1, lakukan :
mulai dari elemen k = n, n-1, …, i+1, lakukan :

     - Bandingkan L[k] dengan L[k-1]
     - Pertukarkan L[k] dengan L[k-1] jika L[k] < L[k-1]Logika Rincian setiap pass sebagai berikut:
  • Pass 1    : mulai dari elemen ke-k = n,n-1,…,2, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[1] berisi harga minimum pertama
  • Pass 2    : mulai dari elemen ke-k = n,n-1,…,3, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[2] berisi harga minimum kedua.
  • Pass 3    : mulai dari elemen ke-k = n,n-1,…,4, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[3] berisi harga minimum ketiga
lakukan sampai ke

  • .Pass n-1: mulai dari elemen ke-k = n, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k]     dengan L[k-1], pada akhir pass n-1, elemen L[n-1] berisi nilai minimum ke (n-1) dan larik L[1..n-1]     terurut menaik.
Algortimanya pengurutan apung/bubblesort dari kecil ke besar(ascending) bisa dituliskan sebagai berikut :


    procedure bubblesort1(input/output L: larikint, input n : integer)
    DEKLARASI
        i : integer
        k : integer
        temp : integer
    ALGORITMA
        for  i = 1 to n - 1 do
            for k =  n downto I + 1  do
                 if L[k] < L[k-1] then
                   temp = L[k]
                    L[k] = L[k-1]
                    L[k-1] = temp
                 endif
            endfor
        endfor


Algortimanya pengurutan apung/bubblesort dari besar ke kecil(descending) bisa dituliskan sebagai berikut :

    procedure bubblesort2(input/output L:larikint, input n:integer)
    DEKLARASI
        I : integer
        k : integer
        temp : integer
    ALGORITMA
        for  I = 1 to n - 1 do
            for k = n downto I + 1  do
                 if L[k] > L[k-1] then
                   temp = L[k]
                    L[k] = L[k-1]
                    L[k-1]= temp
                 endif
            endfor
        endfor


Untuk lebih mudah bisa diilustrasikan sebagai berikut :
klik 2x untuk memperbesar gambar
Pada gambar diatas pengecekan mulai dari data yang paling akhir, kemudian dibandingkan dengan data yang didepannya. Jika data didepannya lebih besar maka akan tukar tempat.

klik 2x untuk memperbesar gambar
 Pada proses kedua, proses dilakukan sampai data yang ke dua,  karena data pertama pasti sudah yang paling kecil yang merupakan hasil dari proses pertama.

klik 2x untuk memperbesar gambar

klik 2x untuk memperbesar gambar


Mudah-mudahan bisa dipahami.

No comments:

Post a Comment