DISUSUN
Dengan menyebut nama Allah SWT yang Maha Pengasih lagi Maha Penyayang, Kami
ucapkan puja dan puji syukur atas kehadirat-Nya, yang telah melimpahkan rahmat, hidayah, dan
inayah-Nya kepada kami, sehingga kami dapat menyelesaikan makalah tentang Bubble sort &
Quick sort.
Makalah ini telah kami susun dengan maksimal dan mendapatkan bantuan dari berbagai
pihak sehingga dapat memperlancar pembuatan makalah ini. Untuk itu kami menyampaikan
banyak terima kasih kepada semua pihak yang telah berkontribusi dalam pembuatan makalah ini.
Terlepas dari semua itu, Kami menyadari sepenuhnya bahwa masih ada kekurangan baik
dari segi susunan kalimat maupun tata bahasanya. Oleh karena itu dengan tangan terbuka kami
menerima segala saran dan kritik dari pembaca agar kami dapat memperbaiki makalah ilmiah ini.
Akhir kata kami berharap semoga makalah ini dapat dipahami bagi siapapun yang
membacanya. Sekiranya, makalah yang telah disusun dapat bermanfaat untuk menambah ilmu
dan wawasan untuk kami dan orang pembacanya. Sebelumnya kami mohon maaf apabila
terdapat kesalahan kata-kata yang kurang berkenan dan kami memohon kritik dan saran yang
membangun demi perbaikan dimasa depan.
DAFTAR ISI
Halaman
KATA PENGANTAR..................................................................................
DAFTAR ISI.................................................................................................
BAB I PENDAHULUAN
A. Latar Belakang .....................................................................................
B. Rumusan Masalah................................................................................
C. Tujuan penulisan..................................................................................
BAB II PEMBAHASAN
A. PENGERTIAN BUBBLE SHORT....................................................
B. LANGKAH – LANGKAH SORTING DALAM BUBBLE SORT...
C. MENGAPA BUBBLE SHORT TIDAK EFISISIEN.........................
D. APA PENGERTIAN QUICK SHORT...............................................
E. BAGAIMANA CARA KERJA QUICK SHORT...............................
BAB III PENUTUP
A. KESIMPULAN
BAB 1
PENDAHULUAN
A. Latar belakang
Algoritma adalah kumpulan langkah sistematis untuk memperoleh hasil yang diinginkan.
Sebelum sebuah algoritma dijalankan, biasanya ada suatu kondisi awal (initial state) yang harus
dipenuhi. Kemudian, langkah-langkah ini diproses hingga mencapai suatu kondisi akhir (final
state).Dalam aplikasinya, setiap algoritma memiliki dua buah ciri khas yang dapat digunakan
sebagai parameter pembanding, yaitu jumlah proses yang dilakukandan jumlah memori yang
digunakan untuk melakukan proses. Jumlah proses inidikenal sebagai kompleksitas waktu yang
disimbolkan dengan T(n), sedangkan jumlah memori ini dikenal sebagai kompleksitas ruang
yang disimbolkan dengan S(n). Kompleksitas waktu diukur berdasarkan jumlah proses khas
suatu algoritma, bukan berdasarkan runtime, secara nyata ketika aplikasi dilakukan. Hal ini
disebabkan oleh arsitektur komputer dan kompiler yang berbeda-beda, sehingga suatu algoritma
yang sama akan menghasilkan waktu eksekusi yang berbeda, pada komputer dan kompiler yang
berbeda.Pengurutan data (sort) adalah algoritma yang meletakkan elemen pada sebuah list atau
tabel dengan urutan tertentu. Algoritma pengurutan data saat ini telah demikian banyaknya,
mulai dari yang sederhana sampai yang kompleks. Sorting didefinisikan sebagai pengurutan
sejumlah data berdasarkan nilai kunci tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke
nilai terbesar (ascending) atau sebaliknya (descending).Algoritma Sorting termasuk salah satu
contoh yang kaya akan solusi
Pengurutan adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu.
Urutan objek tersebut dapat menaik (ascending) atau menurun (descending). Adanya kebutuhan
terhadap proses pengurutan memunculkan bermacam-macam metode pengurutan. Tidak ada
metode yang terbaik untuk pengurutan. Kebanyakan metode pengurutan sederhana hanya bagus
untuk volume data yang kecil tetapi lambat untuk ukuran data yang besar. Metode pengurutan
yang lebih cepat pun (seperti quick sort dan merge sort) memang bagus untuk mengurutkan data
yang banyak, tetapi tidak bagus untuk ukuran data yang sedikit karena memerlukan beban
tambahan (overhead) yang boros waktu dan memori.Di antara banyak algoritma pengurutan
terdapat Comparison Sort atau pengurutan dengan pembandingan merupakan proses pengurutan
dengan melakukan pembandingan antardata, yang kemudian diikuti dengan pertukaran data bila
tidak sesuai dengan syarat keterurutan tertentu.
B. RUMUSAN MASALAH
1. Apa pengertian Bubble sort ?
2. Bagaimana langkah – langkah sorting dalam Bubble sort ?
3. Mengapa Bubble sort tidak efisien ?
4. Apa pengertian Quick sort ?
5. Bagaimana cara kerja Quick sort ?
C. TUJUAAN PENULISAN
1. Untuk mengetahui tentang pengertian Quick sort
2. Untuk mengetahui langkah-langkah sorting dalam Bubble sort
3. Untuk mengetahui bagaimana implementasi algoritma menggunakan bahasa
pemrograman java
BAB 2
PEMBAHASAN
Sebelum kita masuk untuk membuat program, berikut ini adalah syarat dan langkah-
langkah yang harus diperhatikan pada metode Bubble Sort:
Bubble Sort ini merupakan metode pengurutan yang tidak efisien karena ketika
mengurutkan data yang sangat besar akan sangat lambat prosesnya. Selain itu, jumlah
pengulangan akan tetap sama jumlahnya meskipun data sudah cukup terurut.
Langkah pertama adalah tentukan pivotnya, dalam hal ini saya memilih angka 7
Kemudian gunakan algoritma qiuck sort yang ada diatas, jika angka lebih kecil dari pivot
maka akan diletakkan sebelah kiri dan jika lebih besar maka letakkan disebelah kanan.
Langkah pertama adalah bandingkan angka 9 dengan pivot apakah lebih kecil atau lebih
besar.
Lanjut k angka 2, celk apakah angka 2lebih kecil atau lebih besar dari pivot.
Bandingkan pivot dengan angka 10, cek angka 10 lebih besar atau lebih kecil dari pivot.
Lanjut ke angka 5, cek apakah angka 5 lebih kecil atau lebih besar dari angka pivot
Setelah itu masuk ke dalam partisi baru, sampai sini proses belum selesai.
Karena angka 2 lebih kecil dari pivot maka pindahkan ke kiri pivot.
Lanjut ke angka 1, cek apakah angka 1 lebih besar atau lebih kecil dari pivot.
Karena angka 1 lebih kecil maka pindahkan disebelah kiri angka pivot.
Lanjut ke angka 5, cek apakah angkanya lebih besar atau lebih kecil dari pivot.
Karena lebih besar maka posisinya tetap, utuk partisi pertama selesai.
Ulangi langkah-langkah seperti sebelmnya untuk pivot partisi ke 2, dan hasil dari quick sort ini
adalah seperti ini :
#include <iostream>
/*
created by kang ono
https://onophp.blogspot.com/
*/
using namespace std;
void quick_sort(int[],int,int);
int partition(int[],int,int);
int main()
{
int n,i;
n =7;
int a[]={9,4,2,7,10,1,5};
cout<<"\nData sebelum pengurutan:\n";
for(i=0;i<n;i++)
cout<<a[i]<<" , ";
quick_sort(a,0,n-1);
cout<<"\nData setelah dilakukan quick sort:\n";
for(i=0;i<n;i++)
cout<<a[i]<<" , ";
return 0;
}
do
{
do
i++;
while(a[i]<v&&i<=u);
Do
j--;
while(v<a[j]);
if(i<j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}while(i<j);
a[l]=a[j];
a[j]=v;
return(j);
}
Hassilnya adalah :
Proses kedua
(1, 3, 6, 5, 7) menjadi (1, 3, 6, 5, 7)
(1, 3, 6, 5, 7) menjadi (1, 3, 6, 5, 7)
(1, 3, 6, 5, 7) menjadi (1, 3, 5, 6, 7)
(1, 3, 5, 6, 7) menjadi (1, 3, 5, 6
void main { clrscr(); int i,j,x,n,a[50]; cout<<”Masukkan batas index array”<<endl; cin>>n;
cout<<”Masukkan elemen array”<<endl; for(i=0;i<n;i++){ cin>>a[i]; for(j=0;j<n;j++)
{ for(i=0;i<n-1;i++){ if(a[i]>a[i+1]){ x=a[i+1]; a[i+1]=a[i]; a[i]=x; } } } cout<<”Hasil :”<<endl;
for(i=0;i<n;i++){ cout<<a[i]; cout<<endl; } }
package Sorting;
public class QuickSort {
public static int i,p,pivot;
public static void main(String[] args) {
int A [] = {39,99,19,9,12,10,33};
System.out.print("Array A = ");
for (int z = 0; z < A.length; z++) {
System.out.print(A[z]+" ");
}
System.out.println();
QuickSort(A, 0, A.length-1);
System.out.println("\nSetelah diurutkan : ");
for (int z = 0; z < A.length; z++) {
System.out.print(A[z]+" ");
}
System.out.println();
}
public static void QuickSort(int []A, int lo,int hi){
if (lo < hi){
p = partition(A,lo,hi);
QuickSort(A, lo, p-1);
QuickSort(A, p+1, hi);
}
}
public static int partition(int [] A, int lo, int hi){
pivot = A[hi];
i = lo;
int j;
for (j = lo; j <= hi-1; j++){
if (A[j] <= pivot){
int temp = A[i];
A[i] = A[j];
A[j] = temp;
i = i+1;
}
}
int tp = A[i];
A[i] = A[hi];
A[hi] = tp;
return i;
}
}
BAB 3
PENUTUP
A. Kesimpulan:
Quick sort adalah algoritma sorting yang berdasarkan pembandingan dengan metode divide-
and-conqueror. Algoritma quick sort mengurutkan dengan sangat cepat, namun algoritma ini
sangat komplex dan diproses secara rekursif.
Algoritma quick sort dibedakan menjadi rekursif dan non rekursif.
Dalam algoritma quick sort, pemilihan pivot adalah hal yang menentukan apakah algoritma
yang bergantung juga pada elemen yang digunakan sebagai pivot. Terdapat 3 jenis
kompleksitas waktu dari quicksort kasus terburuk (worst case) Tn=O(n2), kasus terbaik (best
case) Tn= O(n log n), kasus rata-rata (average case).