Tujuan Pembelajaran Kegiatan Belajar 3. Pengurutan Data Dengan Algoritma Bubble Sort Alokasi Waktu : 2x45 Menit

Algoritma Bubble Sort Algoritma bubble sort pengurutan gelembung atau apung diinspirasi oleh gelembung sabun yang berada di atas permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Secar umum benda-benda yang ringan akan terapung ke atas permukaan. Prinsip pengapungan di atas juga digunakan pada pengurutan apung. Apabila kita menginginkan array terurut menaik, maka elemen array yang berharga paling kecil “digelembungkan” atau “diapungkan”, artinya diangkat ke “atas” atau ke ujung kiri array melalui proses pertukaran. Proses pengapungan ini dilakukan sebanyak n-1 langkah satu langkah juga disebut satu kali pass dengan n adalah ukuran array. Pada akhir setiap langkah ke i, array A[1..n] akan terdiri atas dua bagian yaitu bagian yang terurut, yaitu A[1..i], dan bagian yang belum terurut, A[i+1..n] gambar 6. 3. Setelah langkah terakhir didapat array A[1..n] yang terurut menaik. 1 i i+1 n Sudah terurut Belum terurut Gambar 2.3 Bagian array yang terurut dan belum terurut pada bubble sort Untuk mendapatkan array yang terurut menaik, algoritma pengurutan gelembung secara global adalah sebagai berikut: Untuk setiap pass i = 1, 2, ..., n-1, dilakukan: Mulai dari elemen k = n, n-1, ..., i+1, dilakukan: 1. Bandingkan A[k] dengan A[k-1]. 2. Pertukarkan A[k] dengan A[k-1] jika A[k] A[k-1] Rincian setiap pass sebagai berikut: Pass 1 : Mulai dari elemen ke-k = n, n-1, ..., 2, bandingkan A[k] dengan A[k-1]. Jika A[k] A[k-1], pertukarkan A[k] dengan A[k-1]. Pada akhir langkah 1, elemen A[1] berisi harga minimum pertama. Pass 2 : Mulai dari elemen ke-k = n, n-1, ..., 3, bandingkan A[k] dengan A[k-1]. Jika A[k] A[k-1], pertukarkan A[k] dengan A[k-1]. Pada akhir langkah 2, array A[1..2] terurut, sedangkan A[3..n] belum terururt. Pass 3 : Mulai dari elemen ke-k = n, n-1, ..., 4, bandingkan A[k] dengan A[k-1]. Jika A[k] A[k-1], pertukarkan A[k] dengan A[k-1]. Pada akhir langkah 3, array A[1..3] terurut, sedangkan A[4..n] belum terururt. Pass n-1 : Mulai dari elemen ke-k = n bandingkan A[k] dengan A[k-1]. Jika A[k] A[k-1], pertukarkan A[k] dengan A[k-1]. Pada akhir langkah n-1, array A[n-1] berisi nilai minimum ke n-1 dan array A[1..n-1] terurut menaik elemen yang tersisia adalah A[n], tidak perlu diurutkan karena hanya satu-satunya.