Laporan Sorting (Bubble Sort & Insertion Sort)
Laporan Sorting (Bubble Sort & Insertion Sort)
STRUKTUR DATA
D3 TEKNIK INFORMATIKA
Pertemuan ke : Ketiga
KELAS 16 D3TI 01
Pengesahan
ASISTEN
BAB I
PENDAHULUAN
I Tujuan Percobaan
1. Memahami algoritma pengurutan: bubble sort, insertion sort dan selection sort
2. Mengetahui kelebihan dan kelemahan masing masing algoritma pengurutan
3. Dapat mengimplementasikan algoritma pengurutan dalam program
II Teori Singkat
Bab ini membahas tentang algoritma pengurutan yang paling sederhana, yaitu bubble sort
(pengurutan gelembung), insertian sort (pengurutan sisip), dan selection sort (pengurutan
terpilih). Tiap tiap algoritma memiliki kelebihan dan kekurangan masing masing.
Kemudian akan diberikan beberapa contoh penggunaannya dalam fungsi dan program secara
keseluruhan.
Algoritma Bubble Sort ini merupakan proses pengurutan yang secara berangsur-angsur
berpindah ke posisi yang tepat karena itulah dinamakan Bubble yang artinya gelembung.
Algoritma ini akan mengurutkan data dari yang terbesar ke yang terkecil (ascending) atau
sebaliknya (descending).
Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data
pertama, mengurutkannya, kemudian mengecek elemen data berikutnya satu persatu dan
membandingkannya dengan elemen data yang telah diurutkan. Karena algoritma ini bekerja
dengan membandingkan elemen-elemen data yang akan diurutkan, algoritma ini termasuk
pula dalam comparison-based sort. Ide dasar dari algoritma Insertion Sort ini adalah mencari
tempat yang "tepat" untuk setiap elemen array, dengan cara sequential search. Proses ini
kemudian menyisipkan sebuah elemen array yang diproses ke tempatnya ang seharusnya.
selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah
diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan,
Selection Sort Membandingkan elemen yang sekarang dengan elemen yang berikutnya
sampai dengan elemen yang terakhir.
BAB II
/*
* program: bubsort.c
* demo bubble sort
*
* Jan Laen Player
*
*/
#include <stdio.h>
#define SIZE 8
void bubsort(void);
int n[SIZE];
int main(void) {
int i;
printf("data acak:\n");
for(i = 0; i < SIZE; i++) {
printf("data ke-%d: ", i);
scanf("%d", &n[i]);
}
bubsort();
printf("\ndata urut: ");
for(i = 0; i < SIZE; i++)
printf("%d ", n[i]);
return 0;
}
void bubsort(void) {
int i, j, tmp;
for(i = 0; i < SIZE - 1; i++) {
for(j = 0; j < SIZE - i - 1; j++) {
if(n[j] > n[j + 1]) {
tmp = n[j];
n[j] = n[j + 1];
n[j + 1] = tmp;
}
}
}
}
Pembahasan
Inti dari fungsi bubsort() di atas adalah pada proses perbandingan tiap elemen dengan
sebelahnya. Proses perbandingan ini akan menghasilkan pertukaran posisi sesuai arah
pengurutan. Proses pertukaran ini seakan akan menggelembungkan elemen yang sedang
dibandingkan dan ditukar.
Secara sederhana, bisa didefenisikan algoritma Bubble Sort adalah pengurutan dengan cara
pertukaran data dengan data disebelahnya secara terus menerus sampai dalam satu iterasi
tertentu tidak ada lagi perubahan.
/*
* program: selsort.c
* demo selection sort
*
* Jan Laen Player
*
*/
#include <stdio.h>
#define SIZE 8
void selsort(void);
int n[SIZE];
int main(void) {
int i;
printf("data acak:\n");
for(i = 0; i < SIZE; i++) {
printf("data ke-%d:", i);
scanf("%d", &n[i]);
}
selsort();
printf("\ndata urut: ");
for(i = 0; i < SIZE; i++)
printf("%d ", n[i]);
return 0;
}
void selsort(void) {
int i, j, min, tmp;
for(i = 0; i < SIZE; i++) {
min = i;
for(j = i; j < SIZE; j++)
if(n[j] < n[min])
min = j;
tmp = n[i];
n[i] = n[min];
n[min] = tmp;
}
}
Sama seperti pada fungsi bubsort() sebelumnya, fungsi selsort() di atas juga mengandung
proses pertukaran elemen. Fungsi akan selalu mencari elemen paling besar (atau paling kecil,
sesuai arah pengurutan) kemudian menukarkan dengan elemen paling depan (atau paling
belakang) yang belum terurut.
Algoritma pengurutan data dalam pemrograman dengan cara menukarkan data yang berada
tepat di sebelah data tersebut secara terus menerus,sampai proses pertukaran tidak lagi bisa
dilakukan.Algoritma bubble sort biasa digunakan untuk mengurutkan nilia dari terkecil ke
nilai terbesar (ascending),maupun sebaliknya(descending).
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.
int main()
{
int data[10];
int i, j, k, tmp, jumlah=0;
cout<<"PROGRAM PENGURUTAN BILANGAN BUBBLE SORT\n\n";
cout<<"Masukkan jumlah bilangan : "; cin>>k;
for(i=0; i<k; i++)
{
cout<<"Masukkan Angka ke "<<(i+1)<<" : ";
cin>>data[i];
if(data[i]%2==0)
{jumlah+=data[i];}
}
cout<<"\nData sebelum diurutkan : "<<endl;
for(i=0; i<k; i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
for( i=0;i<k;i++)
{
for(j=i+1;j<k;j++)
{
if(data[i]>data[j])
{
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
}
cout<<"\nData setelah diurutkan : "<<endl;
for(i=0; i<k; i++)
{
{
cout<<data[i]<<" ";
}
}
cout<<"\nData setelah diurutkan (Genap): "<<endl;
for(i=0; i<k; i++)
{
if (data[i]%2==0)
{
cout<<data[i]<<" ";
}
}
cout<<"\nData setelah diurutkan (Ganjil): "<<endl;
for(i=0; i<k; i++)
{
if (data[i]%2!=0)
{
cout<<data[i]<<" ";
}
}
cout<<"\n\nJumlah dari bilangan genap = "<<jumlah;
return 0;
}
PENUTUP
Kesimpulan
Gagasan dasar dari algoritma Bubble Sort adalah membandingkan sepasang elemen
yang berurutan di dalam larik dan mempertukarkan keduanya jika perlu. Nama bubble sort ini
berasal dari sifat elemen terbesar yang selalu naik ke atas seperti bubble. Beberapa
kekurangan dari algoritma Bubble Sort adalah tidak efektif dalam pengurutan data berskala
besar.serta langkah pengurutan yang terlalu panjang.
Counting Sort adalah algoritma pengurutan efektif dan efisien yang melakukan
pengurutan dengan ide dasar meletakkan elemen pada posisi yang benar, di mana
penghitungan posisi yang benar dilakukan dengan cara menghitung (counting) elemen-
elemen dengan nilai lebih kecil atau sama dengan elemen tersebut. Dan memiliki
kompleksitas waktu linier. Walaupun tidak dapat digunakan secara luas karena banyaknya
batasan.
Saran
REFERENSI :
http://blantikainformatika.blogspot.co.id/2014/11/makalah-bubble-sort-dan-counting-
sort.html
http://www.academia.edu/10069482/LAPORAN_ALGORITMA_DAN_STRUKTUR_DATA
_Gabungan_Bubble_Sort_Insertion_Sort_dan_Selection_Sort