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
- .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.
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 :
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.
Pada proses kedua, proses dilakukan sampai data yang ke dua, karena data pertama pasti sudah yang paling kecil yang merupakan hasil dari proses pertama.
Mudah-mudahan bisa dipahami.
No comments:
Post a Comment