Dokumen tersebut membahas beberapa metode algoritma sorting dan contoh penerapannya, yaitu: 1) Buble sort, selection sort, insertion sort, merge sort, quick sort, radix sort dan counting sort; 2) Contoh penerapan masing-masing metode sorting beserta aplikasinya dalam bahasa pemrograman; 3) Penjelasan radix sort secara rinci beserta contoh penerapannya untuk mengurutkan bilangan bulat.
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...
ALGO-SORT
1. Metode Sorting dan Aplikasinya
Tugas Kuliah Algoritma dan Struktur Data
Selamat Riady
Manajemen Informatika
Politeknik Negeri Lampung
Bandar Lampung, Lampung
Selamat.riady12345@gmail.com
I. PENGENALAN ALGORITMA SORTING
Menurut rudiwiyono011in Uncategorized.trackback
Algoritma adalah kumpulan langkah sistematis untuk
memperoleh hasil yang diinginkan.Salah satu contoh dari
algoritma adalah Sorting (pengurutan).Sorting dapat
didefinisikan sebagai pengurutan sejumlah data
berdasarkan nilai tertentu. Pengurutan dapat dilakukan
dari nilaiterkecil ke nilai terbesar (ascending) atau
sebaliknya (descending).
II.JENIS-JENIS SORTING
Sorting dapat dibedakan menjadi dua yaitu ;
a.Comparasion Sort
Comparasion Sort atau disebut juga penggurutan dengan
pembandingan adalah algoritma yang dalam proses
pengurutannya melakukan pembandingan antar data. Yang
termasuk algoritma comparasion sort yaitu Bubble Sort,
Selection Sort, Insertion Sort, Merge Sort, Quick Sort.
b.Non-Comparasion Sort
Non-Comparasion Sort atau pengurutan tanpa
pembandingan adalah algoritma pengurutan dimana dalam
prosesnya tidak melakukan perbandingan antar data. Yang
termasuk algoritma ini yakni Radix Sort dan Counting
Sort..
a.Metode sorting comparasion sort
1.sorting bublesort
a.pengertian bublesort
Buble sort atau sorting buble adalah teknik sorting
dengan menukar posisi data secara perlahan seperti
gelembung yang keluar dari sebuah gelas bersoda.Selection
sort mencari data dari yang kecil ke besar dan bisa dimulai
dari kanan maupun dari kanan.
jika data sekarang lebih besar dari elemen berikutnya
maka data tersebut ditukar (pengurutan ascending) jika data
sekarang lebih kecil daripada data berikutnya,maka kedua
data tersebut ditukar (pengurutan descending)..
b.Contoh buble sort menurut selamat riady
sorting buble atau buble sort dapat dilakukan dari
kanan maupun dari kiri.
1. 10 56 5 7 9 8
10 5 56 7 9 8
5 10 56 7 9 8
2. 5 10 56 7 9 8
5 10 7 56 9 8
5 7 10 56 9 8
3 5 7 10 56 9 8
5 7 10 56 8 9
5 7 10 8 56 9
5 7 8 10 56 9
4 5 7 8 10 56 9
5 7 8 10 9 56
5 7 8 9 10 56
Kolom warna kuning adalah tempat awal perganti an
datanya yang disusun dari kiri kekanan.dan warna biru
adalah hasil akhirnya.
Dimana semua data yang tadinya acak menjadi tersusun
sesuai urutannya.
c.aplikasi bublesort
aplikasi ini dibuat di turbo pascal.
2. program bublesort;
uses crt;
var
data array [1..10] of integer;
i,j,n,bantu :integer;
begin
clrscr;
writeln('masukan data: ');
writeln('jumlah data ? ');
writeln('mulai masukkan anda ');
for i:=1 to n do
begin
write ('data ke- ',i,'= ');
readln(data[i]);
end;
for i:=1 to N-1 do
for j:=1 to N-1 do
begin
if data [j] > data [j+1] then
begin
bantu :=data [j];
data [j] :=data [j+1];
data [j+1] :=bantu;
end;
end;
for i:=1 to n do
write ('(',data[i],'),');
readln;
end.
2.selection sort
a.pengertian
selection sort atau sorting seleksi adalah
teknik sorting dengan menukar posisi data kan.Selection
sort mencari data dari yang kecil ke besar dan bisa dimulai
dari kanan maupun dari kanan.
b.Contoh menurut selamat riady
1. 0 1 2 3 4 5
10 56 5 7 9 8
perbandingan posisi
10>5 Data ke-0 pindah ke-2
.
5 56 10 7 9 8
2 0 1 2 3 4 5
5 56 10 7 9 8
perbandingan posisi
56>7 Data ke-1
pindah ke-3
5 7 10 56 9 8
3 0 1 2 3 4 5
5 7 10 56 9 8
perbandingan posisi
10<9 Data ke-2 pindah ke-4
5 7 9 56 10 8
4 0 1 2 3 4 5
5 7 9 56 10 8
perbandingan posisi
56<8 Data ke-3 pindah ke-5
5 7 9 8 10 56
5 0 1 2 3 4 5
5 7 9 8 10 56
perbandingan posisi
9<8 Data ke-2 pindah ke-
3
5 7 8 9 10 56
Kolom biru adalah hasil proses penyeleksian data.
c.aplikasinya
program bublesort;
uses crt;
var
data array [1..10] of integer;
i,j,n,bantu :integer;
begin
clrscr;
writeln('masukan data anda: ');
writeln('jumlah data ? ');
writeln('mulai masukkan anda ');
for i:=1 to n do
begin
write ('data ke- ',i,'= ');
readln(data[i]);
end;
for i:=1 to N-1 do
for j:=i+1 to N do
begin
if data [j] > data [j+1] then
begin
bantu :=data [j];
data [j] :=data [j];
data [j+1] :=bantu;
end;
end;
for i:=1 to n do
write ('(',data[i],'),');
readln;
end.
3. 3.Insert sort
a.pengertian
Insert sort atau sorting insert adalah teknik sorting
dengan menggeser kan data.insert sort mencari data dari
yang kecil ke besar dan bisa dimulai dari kanan.
b.contoh
1. 0 1 2 3 4 5
10 56 5 7 9 8
temp Cek geser
5 <5 2 ke 0
10 56 7 9 8
2. 0 1 2 3 4 5
5 10 56 7 9 8
temp Cek geser
7 <7 3 ke 1
5 7 10 56 9 8
3. 0 1 2 3 4 5
5 7 10 56 9 8
temp Cek geser
8 <8 5 ke 2
5 7 8 10 56 9
0 1 2 3 4 5
5 7 8 10 56 9
temp cek Geser
9 <9 5 ke 3
5 7 8 9 10 56
c.aplikasinya
#include<iostream>
#include <conio.h>
int main()
{
int data[]={5, 2, 4, 6, 1, 3};
cout<<“sebelum disorting: “;
for(int i=0; i<6; i++)
cout<<data[i] <<“, “;
cout<<endl <<endl;
for(int i=1; i<6; i++)
{
int j=i;
while(data[j]<data[j-1])
{
int tmp=data[j];
data[j]=data[j-1];
data[j-1]=tmp;
j–;
}
}
cout<<“Setelah disorting: “;
for(int i=0; i<6; i++)
cout<<data[i] <<“, “;
getch();
}
4.Merge Sort
a.Pengertian :
Merge sort merupakan salah satu teknik sorting yang
menurutkan suatu data dengan cara penggabungan. Merge
sort juga menggunakan proses divide and conquer pada
rekursi. Berikut adalah langkah kerja merge sort :
Devide : Memilah elemen – elemen dari data menjadi
dua bagian.
Conquer : Menyelesaikan setiap bagian dengan
memanggil prosedur merge sort secara rekursif.
Kombinasi : Mengkombinasikan dua bagian tersebut secara
rekursif untuk mendapatkan rangkaian data berurutan.
Proses rekursi akan berhenti jika telah mencapai lemen
dasar, atau artinya jika bagian yang diurutkan menyisakan
tepat satu elemen. Sisa pengurutan satu elemen tersebut
menandakan bahwa bagian tersebut telah sesuai rangkaian.
Metode penggabungan biasanya digunakan pada pengurutan
berkas. Prinsip dari metode penggabungan sebagai
berikut :
Mula-mula diberikan dua kumpulan data yang sudah dalam
keadaan urut. Kedua kumpulan data tersebut harus dijadikan
satu table sehingga dalam keadaan urut. Misalnya kumpulan
data pertama (T1) adalah sebagai berikut :
4. 3 11 12 23 31
Sedangkan kumpulan data kedua (T2) adalah sebagai
berikut :
9 15 17 20 35
Proses penggabungan ini dapat dijelaskan sebagai berikut :
mula-mula diambil data pertama dari T1 yaitu 3 dan data
pertama dari T2 yaitu 9. Data ini dibandingkan, kemudian
yang lebih kecil diletakkan sebagai data pertama dari hasil
pengurutan, misalnya T3. Jadi T3 akan memiliki satu data
yaitu 3. Data yang lebih besar yaitu 9 kemudian
dibandingkan dengan data kedua dari T1, yaitu 11. Ternyata
9 lebih kecil dari 11, sehingga 9 diletakkan sebagai data
kedua dari T3. Demikian seterusnya
sehingga didapat hasil sebagai berikut :
3 9 11 12 15 17 20 23 31 35
Algoritma penggabungan dapat dituliskan sebagai
berikut :
1.i=0
2.j=0
3.J3=0
4. Kerjakan baris 5 sampai dengan 7 selama(i<J1)atau(j<J2)
5.J3=J3+1
6. Jika (T1[i] < T2[j]) maka T3[J3] = T1[i], i = i + 1
7. Jika (T1[i] >= T2[j]) maka T3[J3] = T2[j], j = j + 1
8. Jika (i > J1) maka kerjakan baris 9,jika tidak
Kerjakanbaris15
9.i=j
10. Selama (i < J2) kerjakan baris 11 sampai dengan 13
11.J3=J3+1
12.T3[J3]=T2[i]
13.i=i+1
14.Selesai
15.j=i
16. Selama (j < J1) kerjakan baris 17 sampai dengan 19
17.J3=J3+1
18.T3[J3]=T1[j]
19. j = j + 1
B.APLIKASINYA
void MergeSort(int T1[],int T2[],int J1,int J2, int
T3[],int *J3)
{
int i=0, j=0;
int t=0;
while ((i<J1)||(j<J2))
{
if(T1[i]<T2[j])
{
T3[t] = T1[i];
i++;
}
else
{
T3[t] = T2[j];
j++;
}t++;
}
if(i>J1)
for(i=j; i<J2; i++)
{
T3[t] = T2[i];
t++;
}
if(j>J2)
for(j=i; j<J1; j++)
{
T3[t] = T1[j];
t++;
}
*J3 = t;
}
5.RADIX SORT
A.Radix Sorting
Radix Sort merupakan salah satu algoritma Non-
Comparasion Sort (pengurutan tanpa pembandingan).
Proses yang dilakukan dalam metode ini adalah
mengklasifikasikan/menyelesaikan data sesuai dengan
kategori terurut yang tertentu, dan tiap kategori dilakukan
pengklasifikasian lagi, dan seterusnya sesuai kebutuhan,
kemudian subkategori-kategori atau bagian-bagian dari
kategori tersebut digabungkan kembali.
Secara harfiah Radix dapat diartikan sebagai posisi dalam
angka, karena cara ini pertama kalinya mengurutkan nilai-
nilai yang dimasukan (input) berdasarkan radix pertamanya,
lalu pengurutan dilakukan berdasarkan radix keduanya, dan
begitu seterusnya. Pada sistem desimal, radix adalah digit
dalam angka desimal. Misalnya, angka “169” mempunyai 3
digit yaitu 1,6 dan 9.
5. Saya akan membeikan contoh penggunaan algoritma radix
sort untuk pengurutan sebuah kumpulan bilangan bulat
positif, dengan jumlah digit maksimal 3 :
121 076 823 367 232 434 742
936 272
Pertama kali data dibagi-bagi sesuai dengan digit terkanan :
121 076 823 367 232 434 742
936 272
Sehingga dapat di bentuk tabel :
121 076 823 367 232 434 742
936 272
Pada saat penentuan kategori lihat terlebih dahulu nilai digit
yang terbesar dicontoh ini yakni nilai digit yang terbesar 9
sehingga kategori sebanyak 9 baris dan diawali dari 0.
Langsung aja supaya lebih jelas perhatikan tabel dibawah
ini :
Kategori Digit 1 Isi
0 –
1 121
2 232, 742
3 823
4 434, 274
5 –
6 076, 936
7 367
8 –
9 –
Hasil pengkategori pertama kemudian digabungkan kembali
menurut penjelasan yang diatas:
121 232 742 823 274 076 936
367
Kemudian dilakukan pengkategorian kembali berdasarkan
digit yang kedua dengan berpatokan(melihat) baris urutan
pengkategorian pertama yaitu :
121 232 742 823 434 274 936
367
Kategori Digit 2 Isi
0 –
1 –
2 121,823
3 232, 434, 936
4 742
5 –
6 367
7 274, 076
8 –
9 –
Selanjutnya hasil pengkategori kedua digabungkan kembali
121 823 232 434 936 742 367
274 076
Kemudian langkah ketiga (terakhir), dilakukan
pengkategorian kembali berdasar digit ketiga. dengan
berpatokan(melihat) baris urutan pengkategorian kedua
yaitu :
121 823 232 434 936 742 367
274 076
Kategori Digit 3 Isi
0 076
1 121
2 232,274
3 367
4 434
5 –
6 –
6. 7 742
8 823
9 936
Jadi hasil akhirnya dapat dituliskan :
076 121 232 274 367 43
4
82
3
936
Dari langkah-langkah yang telah dilakukan dalam proses
pengurutan menggunakan radix sort, jelas tampak bahwa
radix sort termasuk algoritma pengurutan tanpa
pembanding. Dengan sifatnya yang melihat digit-digit
angka sebagai pengontrolnya, Radix Sort dapat
diimplementasikan dalam pengurutan bilangan desimal dan
bilangan bit. Namun dalam penggunaannya radix sort bisa
dimodifikasi sehingga bisa digunakan untuk menggurutkan
data data negatif dan pecahan.
Kelebihan yang dimiliki Radix Sort antara lain adalah
merupakan algoritma pengurutan yang cepat, mudah, dan
sangat efektif. Namun penggunaannya terbatas pada kasus-
kasus tertentu dan memerlukan memori tambahan dalam
prosesnya.
Daftar pusaka
1.Buble sort,selection sort,dan insert sort,
(Selamat Riady,2 juni 2015 Bandar lampung)
1.Merge sort oleh Hendri Pratama
(http://phpratama.blogspot.com/2014/04/metode-
pengurutan-algoritma-1.html).
2. pegertian algoritma sorting dan Radix sort oleh rudin
https://rudiinformatics011.wordpress.com/2012/05/26/algori
tma-radix-sorting/ (Mei 26, 2012)
7. 7 742
8 823
9 936
Jadi hasil akhirnya dapat dituliskan :
076 121 232 274 367 43
4
82
3
936
Dari langkah-langkah yang telah dilakukan dalam proses
pengurutan menggunakan radix sort, jelas tampak bahwa
radix sort termasuk algoritma pengurutan tanpa
pembanding. Dengan sifatnya yang melihat digit-digit
angka sebagai pengontrolnya, Radix Sort dapat
diimplementasikan dalam pengurutan bilangan desimal dan
bilangan bit. Namun dalam penggunaannya radix sort bisa
dimodifikasi sehingga bisa digunakan untuk menggurutkan
data data negatif dan pecahan.
Kelebihan yang dimiliki Radix Sort antara lain adalah
merupakan algoritma pengurutan yang cepat, mudah, dan
sangat efektif. Namun penggunaannya terbatas pada kasus-
kasus tertentu dan memerlukan memori tambahan dalam
prosesnya.
Daftar pusaka
1.Buble sort,selection sort,dan insert sort,
(Selamat Riady,2 juni 2015 Bandar lampung)
1.Merge sort oleh Hendri Pratama
(http://phpratama.blogspot.com/2014/04/metode-
pengurutan-algoritma-1.html).
2. pegertian algoritma sorting dan Radix sort oleh rudin
https://rudiinformatics011.wordpress.com/2012/05/26/algori
tma-radix-sorting/ (Mei 26, 2012)