Bubble
Bubble
DISUSUN OLEH :
DWI MARLINA
13052244007
B. TUJUAN
Mengetahui dan memahami algoritma pengurutan data dengan metode bubble
sorting baik pengurutan ascending maupun descending.
C. KAJIAN TEORI
Algoritma adalah cara yang dapat ditempuh oleh komputer dalam
mencapai suatu tujuan, terdiri atas langkah-langkah yang terdefinisi dengan
baik, menerima input, melakukan proses, dan menghasilkan output. Meskipun
tidak selalu, biasanya sebuah algoritma memiliki sifat bisa dihitung
(computable) atau bisa diukur (measurable). Sebuah algoritma dikatakan
BENAR (correct) jika algoritma tersebut berhasil mengeluarkan output yang
benar untuk semua kemungkinan input.
Bubble Sort adalah salah satu algoritma untuk sorting data, atau kata
lainnya mengurutkan data dari yang terbesar ke yang terkecil atau sebaliknya
(Ascending atau Descending).
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.
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.
Algoritma bubble sort adalah salah satu algoritma pengurutan yang
paling simple, baik dalam hal pengertian maupun penerapannya. Ide dari
algoritma ini adalah mengulang proses pembandingan antara tiap-tiap elemen
array dan menukarnya apabila urutannya salah. Pembandingan elemen-
elemen ini akan terus diulang hingga tidak perlu dilakukan penukaran lagi.
Algoritma ini termasuk dalam golongan algoritma comparison sort, karena
menggunakan perbandingan dalam operasi antar elemennya.
Proses
step 1 :
Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-1.
Jika nilai kiri<kanan, tukarkan kedua data itu.
step 2 :
Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-2.
Jika nilai kiri<kanan, tukarkan kedua data itu.
step n-1 :
Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-n-1.
Jika nilai kiri<kanan, tukarkan kedua data itu.
Contoh :
Pada pengurutan data “4 3 2 1” di bawah ini.
Siklus Pertama
(4 3 2 1) menjadi (3 4 2 1)
(3 4 2 1) menjadi (3 2 4 1)
(3 2 4 1) menjadi (3 2 1 4)
Siklus Kedua
(3 2 1 4) menjadi (2 3 1 4)
(2 3 1 4) menjadi (2 1 3 4)
(2 1 3 4) menjadi (2 1 3 4)
Siklus Ketiga
(2 1 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
Siklus Keempat
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
Dari langkah pengurutan di atas, terlihat bahwa setiap kali melakukan satu siklus,
data terkecil akan bergeser ke arah awal sebanyak satu step. Dengan kata lain,
untuk menggeser data terkecil dari urutan keempat menuju urutan pertama,
dibutuhkan siklus sebanyak tiga kali, ditambah satu kali siklus untuk
memverifikasi.
D. PEMBAHASAN DAN ANALISA
Percobaan 1 : Bubble Sorting Ascending dari depan ke belakang
Program :
#include <stdio.h>
#define MAKS
void input (void);
void bubble_asc (void);
void tukar (int*x, int*y);
void tampil (void);
int n, data[MAKS];
main()
{
printf ("BUBBLE SORTING ASCENDING\n\n");
input ();
bubble_asc ();
tampil ();
}
void input ()
{
printf ("Input banyak data : ");
scanf ("%d", &n);
int i;
for (i=0; i<n; i++)
{
printf ("Data ke-%d = ", i+1);
scanf ("%d", &data[i]);
}
}
void bubble_asc ()
{
int i,j;
for (i=1; i<n; i++)
{
for (j=0; j<n-i; j++)
{
if (data[j]>data[j+1])
tukar (&data[j], &data[j+1]);
}
}
}
void tampil ()
{
int i;
printf ("\nBubble Sorting Ascending dari depan ke belakang
:\n");
for (i=0; i<n; i++)
{
printf ("%d ", data[i]);
}
}
Setelah Program diatas sudah diketik pada Dev c++, maka program siap di
compile dan di run, program akan menjalankan fungsi yang pertama yaitu
inputan manual, jadi isikan jumlah data yang akan di sorting kemudian isikan
masing masing datanya seperti pada gambar 1.1 dibawah ini :
main()
{
printf ("BUBBLE SORTING ASCENDING\n\n");
input ();
bubble_asc ();
tampil ();
}
void input ()
{
printf ("Input banyak data : ");
scanf ("%d", &n);
int i;
for (i=0; i<n; i++)
{
printf ("Data ke-%d = ", i+1);
scanf ("%d", &data[i]);
}
}
void bubble_asc ()
{
int i,j,c=1;
for (i=1; i<n; i++)
{
for (j=n-1; j>=c; j--)
{
if (data[j]<data[j-1])
{
tukar (&data[j], &data[j-1]);
}
}
printf ("\n");
c++;
}
}
void tampil ()
{
int i;
printf ("\nBubble Sorting Ascending dari belakang ke depan
:\n");
for (i=0; i<n; i++)
{
printf ("%d ", data[i]);
}
}
Setelah Program diatas sudah diketik pada Dev c++, maka program siap di
compile dan di run, program akan menjalankan fungsi yang pertama yaitu
inputan manual, jadi isikan jumlah data yang akan di sorting kemudian isikan
masing masing datanya seperti pada gambar 2.1 dibawah ini :
main()
{
printf ("BUBBLE SORTING DESCENDING\n\n");
input ();
bubble_desc ();
tampil ();
}
void input ()
{
printf ("Input banyak data : ");
scanf ("%d", &n);
int i;
for (i=0; i<n; i++)
{
printf ("Data ke-%d = ", i+1);
scanf ("%d", &data[i]);
}
}
void bubble_desc ()
{
int i,j;
for (i=1; i<n; i++)
{
for (j=0; j<n-i; j++)
{
if (data[j]<data[j+1])
tukar (&data[j], &data[j+1]);
}
}
}
void tampil ()
{
int i;
printf ("\nBubble Sorting Descending dari depan ke belakang
:\n");
for (i=0; i<n; i++)
{
printf ("%d ", data[i]);
}
}
Setelah Program diatas sudah diketik pada Dev c++, maka program siap di
compile dan di run, program akan menjalankan fungsi yang pertama yaitu
inputan manual, jadi isikan jumlah data yang akan di sorting kemudian isikan
masing masing datanya seperti pada gambar 3.1 dibawah ini :
main()
{
printf ("BUBBLE SORTING DESCENDING\n\n");
input ();
bubble_desc ();
tampil ();
}
void input ()
{
printf ("Input banyak data : ");
scanf ("%d", &n);
int i;
for (i=0; i<n; i++)
{
printf ("Data ke-%d = ", i+1);
scanf ("%d", &data[i]);
}
}
void bubble_desc ()
{
int i,j, c=1;
for (i=1; i<n; i++)
{
for (j=n-1; j>=c; j--)
{
if (data[j]>data[j-1]){
tukar (&data[j], &data[j-1]);}
}
}
}
void tampil ()
{
int i;
printf ("\nBubble Sorting Descending dari belakang ke depan
:\n");
for (i=0; i<n; i++)
{
printf ("%d ", data[i]);
}
}
Setelah Program diatas sudah diketik pada Dev c++, maka program siap di
compile dan di run, program akan menjalankan fungsi yang pertama yaitu
inputan manual, jadi isikan jumlah data yang akan di sorting kemudian isikan
masing masing datanya seperti pada gambar 4.1 dibawah ini :