You are on page 1of 13

1

KATA PENGANTAR

Segala puji bagi Allah SWT yang telah melimpahkan rahmat dan hidayahNya, sehingga
kami dapat menyelesaikan makalah ini.
Terimakasih kami ucapkan kepada orang tua atas doa yang selalu mengiringi kami, kepada
dosen Struktur Data yang telah memberikan judul makalah sebagai landasan kami dalam
melakukan observasi, dan tidak lupa terimakasih untuk teman-teman yang telah bekerja sama
dengan baik dalam menyelesaikan tugas makalah ini, sehingga kami bisa menyelesaikan
makalah kami yang berjudul BUBBLE SORT .
Kami menyadari bahwa dalam menulis makalah ini masih banyak kekurangannya,
oleh sebab itu kami sangat mengharapkan kritik dan saran yang membangun. Dan semoga
dengan selesainya makalah ini dapat bermanfaat bagi pembaca dan teman-teman. Amin



Jakarta, 5 Juni 2013
Penulis













2


DAFTAR ISI



KATA PENGANTAR. i
DAFTAR ISI ii
BAB I PENDAHULUAN
1.1 Latar Belakang 1
1.2 Tujuan. 1
BAB II PEMBAHASAN
2.1 Definisi Bubble Sort... 2
2.2 Pengertian / Konsep Bubble Sort 2
2.3 Kelebihan Dan Kelemahan Metode Bubble Sort 2
2.4 Algoritma Dari Bubble Sort... 3
2.5 Analisis Algoritma Bubble Sort.. 3
2.6 Implementasi Dalam Bentuk Flowchart. 6
2.7 Bubble Sort Dalam Bahasa C ++ 8
BAB III PENUTUP
3.1 Kesimpulan.. 10
DAFTAR PUSTAKA 11











3

BAB I
PENDAHULAN

1.1 Latar Belakang
Pada tugas kali ini yang membahas bubble Sort, antara lain:
a. Bubble dalam bentuk algoritma adalah Proses mengurutkan, menyusun/ memindahkan
posisi elemen-elemen/ data dengan tata urut tertentu pada array.
b. Jenis tampilan berupa Ascending/ proses menaik dan Discending/ proses menurun.
- Ascending
Ex: A-Z, 0-9.
- Discending
Ex: Z-A, 9-0.
c. Bubble sort dalam bentuk flowchart
d. Bubble sort ke dalam bahasa program C++

1.2 Tujuan
a. Mahasiswa dapat memahami berbagai macam algoritma pengurutan (bubble sort).
b. Mahasiswa dapat menemukan / menentukan algoritma pengurutan dan pencarian paling
cepat dan tepat untuk suatu masalah tertentu.
















4

BAB II
PEMBAHASAN

2.1 Definisi Bubble Sort
Teknik sort yang berkerja dengan menggunakan prinsip gelembung (bubble) udara
yang akan bergerak naik keatas secara satu per-satu.
Prinsip kerja dari bubble sort adalah :
1. Pengecekan mulai dari data ke satu sampai data ke-n
2. Bandingkan data ke-n dengan data sebelumnya (n-1)
3. Jika lebih kecil maka pindahkan bilang tersebut dengan bilang yang ada didepannya
(sebelumnya) satu persatu (n-1,n-2,n-3,.dts)
4. Jika lebih besar maka tidak terjadi permindahan
5. Ulang langkah 2 dan 3 s/d sort optimal.

2.2 Pengertian / Konsep Bubble Sort
Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun
yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada
berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas
dipakai pada pengurutan gelembung.
Bubble Sort (metode gelembung) adalah metode/algoritma pengurutan dengan
dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus
sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada
perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing
kunci akan dengan lambat menggelembung ke posisinya yang tepat.

2.3 Kelebihan Dan Kelemahan Metode Bubble Sort
Kelebihan :
a. Metode Bubble Sort merupakan yang paling simple
b. Metode Bubble Sort muda di pahami algoritmanya
Kelemahan :
Meskipun simpel metode Bubble Sort merupakan metode pengurutan yang paling tidak
efisien. Kelemahan Bubble Sort adalah pada saat mengurutkan data yang sangat besar akan
mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan

5

ketika data yang diolah jika data cukup banyak. Kelemahan lain adalah jumlah pengulangan
akan tetap sama jumlahnya walaupun data sesungguhnya sudah cukup terurut. Hal ini
disebabkan setiap data dibandingkan dengan setiap data yang lain untuk menentukan
posisinya.

2.4 Algoritma Dari Bubble Sort
a. Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai
maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak
sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-
Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan
descending (A-Z).
b. Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini
sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 ; n-1 dgn n.
c. Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n.
Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1.
mulai dari data ke-1 dgn data ke-2, dan seterusnya.
d. Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi

2.5 Analisis Algoritma Bubble Sort
Tujuan dari analisis algoritma adalah untuk mengetahui efisiensi dari algoritma.
Dalam hal ini dilakukan pembandingan antara dua atau lebih algoritma pengurutan.Tahap
analisis adalah melakukan pengecekan program untuk memastikan bahwa program telah
benar secara logika maupun sintak (tahap tracing atau debugging). Tahap selanjutnya yaitu
menjalankan program untuk mengetahui running time atau waktu komputasi dalam hal ini
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data
random, terurut membesar dan terurut mengecil.
Salah satu cara untuk menganalisa kecepatan algoritma sorting saat running time adalah
dengan menggunakan notasi Big O. Algoritma sorting mempunyai kompleksitas waktu
terbaik, terburuk, dan rata-rata. Dengan notasi Big O, kita dapat mengoptimalkan
penggunaan algoritma sorting. Sebagai contoh, untuk kasus dimana jumlah masukan untuk
suatu pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge
sort, atau heap sortkarena kompleksitas waktu untuk kasuk terburuk adalah O(n log n). Hal
ini tentu akan sangat berbeda jika kita menggunakan algoritma sorting insertion sort atau
bubble sort dimana waktu yang dibutuhkan untuk melakukan pencarian akan sangat lama.

6

Hal ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting tersebut dengan
jumlah masukan yang banyak adalah O(n2).
Dari grafik dibawah dapat diketahui buble sort adalah metode yang paling lambat dari
yang lambat-lambat.










Contoh Proses Pengurutan Algoritma Bubble Sort
Berikut ini kita akan mencoba membuat sebuah program pengurutan data atau Sorting
dengan metode Bubble Sort. kita akan memasukan 8 data yang int
Data[8]={20,12,35,11,17,9,58,23}; yang tidak berurutan. pemrogramanya, serta kita akan
meghitung berapa banyak proses pertukaran posisi data, dan berapa banyak proses
perbandingan data. contoh codingnya adalah sebagai berikut :

20 12 35 11 17 9 58 23
1 2 3 4 5 6 7 8

Di metode Bubble Sort, proses pengurutan dimulai dengan membandingkan elemen pertama
untuk mendapatkan angka terbesar. Lalu angka tersebut ditempatkan pada elemen
terakhir.Sebagai langkah awal, isi elemen pertama dibandingkan dengan elemen ke-2. Jika isi
elemen ke-2 lebih kecil dari elemen pertama, maka isi kedua elemen tersebut ditukar.
Sehingga isi array berubah menjadi :

12 20 35 11 17 9 58 23
1 2 3 4 5 5 7 8
Indeks yang menunjukkan
posisi elemen
Elemen array setelah di tukar
12<20

7


Lalu elemen ke-2 dibandingkan dengan elemen ke-3. jika isi elemen ke-3 lebih besar, maka
isi kedua elemen tersebut tidak ditukar.




Perbandingan selanjutnya dilakukan terhadap elemen ke-3 dengan ke-4. Karena elemen ke-4
lebih kecil, maka isi kedua elemen tersebut ditukar. Sehingga isi array sebelumnya berubah
menjadi :


1 2 3 4 5 6 7 8


Proses perbandingan seperti diatas dilakukan secara berulang sampai pada elemen terakhir.
Sehingga pada akhirnya akan dihasilkan bilangan terbesar yang ditempatkan pada posisi
elemen terakhir. Dibawah ini kondisi array setelah perbandingan elemen terakhir.



1 2 3 4 5 6 7 8



Proses diatas hanya mencari bilangan terbesar pertama. Ulangi proses tersebut untuk mencari
bilangan terbesar lainnya setelah bilangan terbesar pertama tadi. Namun proses perbandingan
hanya dilakukan mulai dari elemen pertama sampai elemen ke-7.
Isi elemen pertama dibandingkan dengan elemen ke-2. Karena isi elemen ke-2 lebih besar,
maka isi kedua elemen tersebut tidak ditukar. Kemudian elemen ke-2, dibandingkan dengan
elemen ke-3. Karena elemen ke-3 lebih kecil, maka isi kedua elemen tersebut ditukar
sehingga isi array menjadi :



1 2 3 4 5 6 7 8

12 20 35 11 17 9 58 23
12 20 11 35 17 9 58 23
12 20 11 17 9 35 23 58
12 11 20 17 9 35 23 58
Tidak ada pertukaran karena
20 < 35
Elemen array setelah di tukar
11<35
1 2 3 4 5 6 7 8

Elemen terakhir berisikan
bilangan terbesar
Elemen array setelah di tukar
11<20

8


Lanjutkan proses diatas sampai pada elemen ke-7. Hasilnya isi array menjadi.



1 2 3 4 5 6 7 8



Kini isi elemen ke-7 dan ke-8 sudah urut berdasarkan bilangan kecil ke besar. Namun elemen
lainnya belum terurut. Untuk itu ulangi proses diatas, namun elemen yang dibandingkan
hanya sampai pada elemen ke-6 saja. Setelah itu, proses perbadingan diulangi lagi sampai
elemen terakhir yang dibandingkan yaitu elemen ke-2. Hasil akhirnya menjadi :


1 2 3 4 5 6 7 8


2.6 IMPLEMENTASI DALAM BENTUK FLOWCHART
Seperti telah dijelaskan sebelumnya, proses pengurutan memakai variabel array untuk
menampung semua bilangan yang akan diurutkan. Oleh karena itu sebelum proses
pengurutan dilakukan, terlebih dahulu dibuat proses untuk mengisi semua bilangan ke dalam
array.

Setelah array tersebut terisi, barulah proses pengurutan dilakukan untuk mengurutkan
isinya. Seperti diketahui, jika salah satu elemen array di isi dengan nilai baru, maka nilai lama
akan terhapus. Oleh sebab itu untuk mempertukarkan isi elemen array harus mengggunakan
satu variabel cadangan. Variabel ini digunakan untuk menyimpan isi array yang akan ditukar.



1 2 3 4 5 6 7 8
Misalnya isi elemen ke-2 dari variabel BILARR akan ditukar dengan elemen ke-3. Maka isi
elemen ke-2 disimpan terlebih dahulu ke variabel cadangan (misalnya untuk variabel ini
diberi nama TEMP). Setelah itu, isi elemen ke-3 dipindahkan ke elemen ke-2, lalu isi dari
12 11 20 17 9 23 35 58
9 11 12 17 20 23 35 58
9 11 12 17 20 23 35 58
Elemen yang sudah
di urutkan
BILLAR


9

variabel TEMP dipindahkan ke elemen ke-3. Ilustrasi dibawah ini memperlihatkan
pertukaran kedua elemen tersebut.
11



1 2 3 4 5 6 7 8


Proses tersebut dapat dituliskan sebagai berikut :
TEMP = BILARR (2)
BILARR(2) = BILARR (3)
BILARR(3) = TEMP
Dari proses yang telah dijelaskan, pengurutan bilangan dari kecil ke besar dengan metode
bubble sort dapat digambarkan melalui flowchart seperti berikut :
1.



















9 11 12 17 20 23 35 58
I=0
J=0
N=0
Input Bil
N=N+1
BILARR (N) =
BIL
N=N + 1
J= J + 1
BILARR(I)
BILARR(I+1)

TEMP=BILARR(I)
BILARR(I)=BILARR(I+1)
BILARR(I+1)=TEMP
I=N-J
1
2
3
BIL = 0
2

10




















2.7 Bubble Sort dalam Bahasa Program C++

#include <iostream.h>
#include <conio.h>
main()
{
int i,j,n,data[10],simpan,k;
cout<<"\tBUBBLE SORT MENGGUNAKAN C++"<<endl;
cout<<"\t============================"<<endl;
cout<<"\nmasukkan banyak data= ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"data "<<i<<" = ";cin>>data[i];
}
cout<<"awal = ";
J = N-1
I = 0
I = 0
3
I = I +1
PRINT
BILARR(I)
I = N END

11

for(i=1;i<=n;i++)
cout<<data[i]<<" ";
cout<<endl;
for(i=1;i<n;i++)
{
for(j=1;j<n;j++)
{
if(data[j]>data[j+1])
{
simpan=data[j];
data[j]=data[j+1];
data[j+1]=simpan;
}
}
}
cout<<"hasil= ";
for(i=1;i<=n;i++)
cout<<data[i]<<" ";
getch();
}
Output Hasil program C ++












12

BAB III
PENUNTUP

3.1 Kesimpulan
Algoritma Bubble Sort adalah algoritma yang simpel dan mudah dipelajari, selain itu
memiliki definisi terurut yang jelas dalam algoritmanya. Algoritma ini juga memiliki ciri
khas, yaitu kura-kura dan kelinci. Akan tetapi, algoritma BubbleSort memiliki kelemahan,
yaitu kompleksitas algoritma pada saat mengurutkan data yang sangat besar akan mengalami
kelambatan luar biasa, sehingga menjadikan algoritma ini tidak efektif dalam pengurutan.

















13

DAFTAR PUSTAKA

http://informatika.stei.itb.ac.id/
http://www.firmanway.com/2013/04/contoh-makalah.html
http://fairuzelsaid.wordpress.com/2009/12/28/struktur-data-algoritma-implementasi-buble-sort-
dalam-bahasa-c/
id.scribd.com

You might also like