Anda di halaman 1dari 36

Sorting array 1 dimensi

SORTING
Sort adalah proses pengurutan data yang tadinya tersusun secara acak
sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Pada umunya terdapat 2 macam jenis pengurutan, yaitu :
• Ascending : PENGURUTAN DARI NILAI TERKECIL MENUJU NILAI
TERBESAR. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
• DESCENDING: PENGURUTAN DARI NILAI TERBESAR MENUJU NILAI
TERKECIL. 10, 9, 8, 7, 6, 5, 4, 3, 2, 1.

Selain jenis pengurutan di atas, pada bagian kali ini kita juga akan membahas
mengenai metode – metode yang dapat digunakan untuk melakukan sorting.
Metode – metodenya yaitu :
METODE SORT

• SEDERHANA

SELECTION, BUBBLE, INSERTION

• LANJUT
QUICK, MERGE

3
SELECTION SORT

Tehnik pengurutan dgn cara pemilihan


elemen atau proses kerja dgn memilih
elemen data terkecil utk kemudian
dibandingkan & ditukarkan dgn elemen pd
data awal, dst s/d seluruh elemen shg akan
menghasilkan pola data yg telah disort
secara ascending.
Algoritma Selection

1). J selalu menunjuk elemen yang berisi nilai terkecil


dalam bagian array yang diperiksa ( dari I sampai dengan 6 )

2). Nilai terkecil yang ditunjuk oleh J


ditukar dengan isi elemen yang sedang ditunjuk oleh K.
Dengan demikian A[K] akan berisi nilai yang terkecil
perhatikan K mulai dari 0 sampai dengan 5.
Jadi menyimpan nilai terkecil pertama di A[0],
kedua di A[1]
ketiga di A[2]
keempat di A[3]
kelima di A[4]
keenam di A[5]
dan sisanya akan berada di A[6]

5
Contoh program Selection Sort dalam bahasa C yang dapat ditest di komputer
#include<stdio.h>
#define n 7
void main()
{ int A[n] = {15, 10, 7, 22, 17, 5,12 }; Menyiapkan array
int X, I, K; dan isinya
printf(“Sebelum di sort\n”);
for (I=0; I <= n-1; I++)
Mencetak isi array
printf(“ %d”, A[I]; ) sebelum disort
printf(“\n”);

K = 0; 15 10 7 22 17 5 12
while (K <= n-2)
{ J = K; I = K+1;
while(I <= n-1)
{ if(A[I] < A[J]) Proses
J = I; Selection Sort
I++;
}
X = A[J];
A[J] = A[K]
A[K] = X;

K++; Mencetak isi array


} sesudah di sort
5 7 10 12 15 17 22
printf(“Sesudah Sort \n”);
for(I=0; I <= n-1; I++)
printf(“ %d”, A[I] );
Jadi Bisa di simpulkan :

Prinsip Kerja dari Teknik Selection Sort ini


adalah :

1. Pengecekan dimulai data ke-1 sampai


dengan data ke-n
2. Tentukan bilangan dengan Index terkecil
dari data bilangan tersebut
3. Tukar bilangan dengan Index terkecil
tersebut dengan bilangan pertama ( I = 1 )
dari data bilangan tersebut
4. Lakukan langkah 2 dan 3 untuk bilangan
berikutnya ( I= I+1 ) sampai didapatkan
urutan yg optimal.
Latihan
• Lakukan proses sorting untuk beberapa elemen data di bawah ini
dengan menggunakan metode selection sort
• 42 23 74 11 65
• 58 33 78 94 98 12 36
• 28 30 5 15 25 100
• 35 70 75 80 85 60 55 50 45
BUBBLE SORT
Tehnik Sort yg bekerja dgn menggunakan prinsip gelembung
(bubble) udara yg akan bergerak naik ke atas secara satuper satu.
Algoritma Bubble Sort
1) n = jumlah elemen = 7
2) Proses loop dilaksanakan sebanyak
6 kali yaitu K : dari 0 - (n-2)
3) Menukar isi A[I] dengan A[I+1]
(SWAP) bila A[I] > A[I+1]

Ada 2 komponen pokok algoritma pada Sort


yaitu :
1. Compare yang dilakukan dengan if( )
2. Swap yaitu pertukaran isi 2 buah elemen
Menyiapkan array dan isinya
Mencetak isi array sebelum disort:
Tercetak :
15 10 7 22 17 5 12

Proses Bubble Sort

Tercetak :
Mencetak isi array
sesudah di sort
5 7 10 12 15 17 22
Prinsip Kerja dari Bubble Sort adalah :
1. Pengecekan mulai dari data ke-1 sampai data
ke-n
2. Bandingkan data ke-n dengan data sebelumnya
(n-1)
3. Jika lebih kecil maka pindahkan bilangan
tersebut dengan bilangan yg ada didepannya
( sebelumnya ) satu persatu (n-1,n-2,n-3,....dst)
4. Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.
Latihan
• Lakukan proses sorting untuk beberapa elemen data di bawah ini
dengan menggunakan metode Bubble sort
• 42 23 74 11 65
• 58 33 78 94 98 12 36
• 28 30 5 15 25 100
• 35 70 75 80 85 60 55 50 45
INSERTION SORT
Prinsip dasar Insertion adalah secara berulang-ulang menyisipkan / memasukan
setiap elemen. ke dlm posisinya / tempatnya yg benar.
Algoritma
1. Prinsip Kerja Insertion Sort adalah
2. Pengecekan mulai dari data ke-1 sampai data ke-n
3. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
4. Bandingkan data ke-I tersebut dengan data sebelumnya
(I-1), Jika lebih kecil maka data tersebut dapat disisipkan
ke data awal sesuai dgn posisisi yg seharusnya
5. Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I=
I+1 ) sampai didapatkan urutan yg optimal.
Latihan
• Lakukan proses sorting untuk beberapa elemen data di bawah ini
dengan menggunakan metode insertion sort
• 42 23 74 11 65
• 58 33 78 94 98 12 36
• 28 30 5 15 25 100
• 35 70 75 80 85 60 55 50 45
Merge Sort
• Merge Sort
Algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer.
Berikut menjelaskan langkah kerja dari Merge sort.
• Divide : Memilah elemen – elemen dari rangkaian data menjadi dua
bagian.
• Conquer : Conquer setiap bagian dengan memanggil prosedur merge sort
secara rekursif
• Kombinasi : Mengkombinasikan dua bagian tersebut secara rekursif untuk
mendapatkan rangkaian data berurutanProses rekursi berhenti jika
mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan
diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen
tersebut menandakan bahwa bagian tersebut telah terurut sesuai
rangkaian.
Prosedure devide
• Prosedure membentuk tree sort merge
• Membagi 2 elemen dengan cara ( low + high)/2
• Lakukan s/d elemen menjadi tunggal

Prosedure Conquer
• Balik bentuk tree sort
• Call setiap elemen sesuai dengan posisinya
• Sort setiap box pada tree call
Program
#include <iostream> cout<<endl;
#include <conio>
void MergeSort(int low, int high); MergeSort(1,elemen);
void Merge(int , int , int ); cout<<endl;
int A[50];
int main() cout<<"Setelah di mergesort: \n\n";

{ for(i=1;i<=elemen;i++)

int i, elemen; {

cout<<"Berapa banyak elemen yang ingin disusun ? "; cout<< A[i] <<" ";
cin>>elemen; }
cout<<endl; cout<< endl << endl;
cout<<"Masukkan " <<elemen<<" elemen: getch();
\n";cout<<endl;
}
for(i=1;i<=elemen;i++)
{
cout << "Elemen ke-"<<i<<" = ";
cin>>A[i];
}
void Merge(int low, int mid, int high)
Program {
//prosedure Mergesort int h,i,j,k,b[50];
void MergeSort(int low, int high) h=low;
{ i=low;
int mid; j=mid+1;
if(low<high) while((h<=mid)&&(j<=high))
{ {
mid = (low+high)/2; if(A[h]<A[j])
MergeSort(low,mid); {
MergeSort(mid+1, high); b[i]=A[h];
Merge(low, mid, high); h++; }
} else{
} b[i]=A[j];
j++; }
i++;
}
Program
if(h>mid) {
for(k=j;k<=high;k++)
{ b[i]=A[k];
i++; }
}
else{
for(k=h;k<=mid;k++)
{
b[i]=A[k];
i++;
}
}
for(k=low;k<=high;k++)
{ A[k]=b[k];
}
}
Latihan
• Lakukan proses sorting untuk beberapa elemen data di bawah ini
dengan menggunakan metode merge sort
• 42 23 74 11 65
• 58 33 78 94 98 12 36
• 28 30 5 15 25 100
• 35 70 75 80 85 60 55 50 45
QUICK SORT
algoritma sorting yang berdasarkan pembandingan dengan metode
divide andconquer (bagi dan kuasai)

Algoritma quick sort mengurutkan dengan sangat cepat, namun algoritma ini
sangatkomplex dan diproses secara rekursif. Sangat memungkinkan untuk
menulis algoritma yanglebih cepat untuk beberapa kasus khusus, namun
untuk kasus umum, sampai saat ini tidak adayang lebih cepat dibandingkan
algoritma quick sort
Prinsip Kerja dari Quick Sort adalah :
1. Tentukan Lower Bound (Batas Bawah) & Upper
Bound (Batas Atas)
2. Bandingkan Lower Bound (LB) dengan Upper
Bound (UB)
3. Jika LB>UB, Tukar (cari operasi perbandingan
yang optimal/terkecil)
4. Jika LB =< UB, maka Next Upper Bound & Lower
Bound
5. Ulangi langkah diatas s/d sort.
Algoritma Quick Sort
Latihan
• Lakukan proses sorting untuk beberapa elemen data di bawah ini
dengan menggunakan metode merge sort
• 42 23 74 11 65
• 58 33 78 94 98 12 36
• 28 30 5 15 25 100
• 35 70 75 80 85 60 55 50 45
• 22 10 15 3 8 2
Algoritma untuk mencari elemen MaxMin :
PROCEDURE STRAITMAXMIN(A,n,i,max,min)
int i,n, A [n], max,min
max  min  A[0]
FOR i  1 To n
IF A[i] > max; max  A[i];
ELSE IF A[i] < min ; min  A[i] ENDIF
ENDIF
REPEAT
END STRAITMAXMIN
BEST CASE
• Keadaan yg tercapai jika elemen pada himpunan
A disusun secara increasing (menaik). Dengan
perbandingan waktu n - 1 kali satuan operasi.

• Contoh : Terdapat himp.A yg berisi 4 buah


bilangan telah disusun secara increasing dengan
A[0] = 2, A[1] = 4, A[2]=5, A[3]=10. Tentukan /
cari Bilangan Max&Min serta jumlah operasi
perbandingan yg dilakukan.
• Penyelesaian
untuk masalah tersebut dapat digunakan procedure
STRAITMAXMIN yg menghasilkan
bilangan Min=2 & bilangan Max=10,
Operasi perbandingan data mencari bilangan MaxMin dari
himpunan tersebut (n-1) =3 kali operasi perbandingan.
WORST CASE
• Terjadi jika elemen dalam himp. disusun secara
decreasing (menurun). Dengan. Oprasi
perbandingan sebanyak 2(n-1) kali satuan operasi.
• Contoh : Mencari elemen MaxMin & jumlah oprasi
perbandingan yg dilakukan terhadap himp.A yg
disusun decreasing.
A[1]=80, A[2]=21, A[3]=6, A[4]=-10
Penyelesaian
• untuk masalah tersebut dengan proses
STRAITMAXMIN adalah elemen max=80 & elemen
min=-10, Operasi. perbandingan untuk elemen
Maxmin tersebut adalah 2(4-1) = 6 kali satuan
operasi.
AVERAGE CASE
• Jika pencarian elemen MaxMin dilakukan pada
elemen dalam himpunan yg tersusun secara acak
(tidak decreasing/tidak increasing). Jumlah oprasi.
Perbandingan yg dilakukan adalah rata-rata waktu
tempuh best case & worst case, yaitu ½ [ (n-1) +
2(n-1) ] = ( 3n/2 -1 ) kali.

• Contoh, Pada himpuan A yg berisi { 5,-4, 9,7 }


dilakukan pencarian elemen max & min dengan
menggunakan proses STRAITMAXMIN. Berapa
elemen maxmin yg didapatkan & jumlah oprasi
perbandingan yg dilakukan.
• Penyelesaiannya :
Elemen max=9, & elemen min=-4. Jumlah operasi
perbandingan adalah ( 3. 4/2 - 1) = 5 kali satuan
operasi.

Anda mungkin juga menyukai