Kelompok IX :
FAKULTAS TEKNIK
MEDAN
2017
KATA PENGANTAR
Puji dan syukur kami ucapkan kepada Tuhan Yang Maha Esa karena atas berkat dan
rahmatnya kami dapat menyelesaikan makalah yang berjudul “Algoritma Pengurutan
(Sorting)”. Adapun makalah ini kami buat dalam memenuhi tugas dari mata kuliah
Algoritma dan dasar Pemrograman yang telah di berikan oleh Dosen Pengampu Bapak
Amirhud Dalimunthe, S.T., M.Kom. Kami berharap makalah ini dapat bermanfaat bagi
pembaca dalam menambah pengetahuan tentang Algoritma pengurutan (sorting)
Kami ucapkan termakasih kepada pihak-pihak yang telah membantu kami dalam
menyelesaikan makalah ini. Serta kami juga tidak lupa mengucapkan terimakasih kepada
dosen pengampu yang juga bersedia membimbing kami dalam menyusun makalah ini.
Kami mohon maaf apa bila ada kekurangan dan kesalahan dalam tulisan makalah ini
karena pada dasarnya kami masih mahasiswa yang masih dalam proses tahap
pembelajaran. Kami harapkan adanya saran dan kiritikan pada makalah kami ini supaya
makalah kami ini menjadi lebih baik.
Atas perhatiannya kami ucapkan TERIMAKASIH.
Kelompok IX
ii
DAFTAR ISI
HALAMAN JUDUL...............................................................................................................i
KATA PENGANTAR...........................................................................................................ii
DAFTAR ISI.........................................................................................................................iii
1.1 Latar Belakang..............................................................................................................1
1.2 Rumusan Masalah........................................................................................................1
1.3 Tujuan...........................................................................................................................1
BAB II PEMBAHASAN.......................................................................................................2
2.1 Masalah Pengurutan.....................................................................................................2
2.2 Algoritma Pengurutan..................................................................................................3
2.3 Algoritma Pengurutan Apung.....................................................................................10
2.4 Algoritma Pengurutan Seleksi....................................................................................12
2.5 Algoritma Pengurutan Sisip.......................................................................................17
2.6 Pengurutan Pada Array Terstruktur............................................................................21
BAB III PENUTUP..............................................................................................................23
3.1 Kesimpulan.................................................................................................................23
3.2 Saran...........................................................................................................................23
DAFTAR PUSTAKA..........................................................................................................24
iii
BAB I
PENDAHULUAN
Adapun Kelebihan Sorting adalah untuk memudahkan dalam pencarian data, dan
juga agar data lebih sestematis karena terurut. Sehingga metode pengurutan dengan
menggunakan sorting sangat bermanfaat dalam pencarian data.
Pada makalah ini kami memilih metode sorting, karena melihat keunggulan yang
dimiliki oleh sorting. Oleh karena itu sorting sangat bermanfaat untuk pencarian data.
1.3 Tujuan
1. Dapat menjelaskan algoritma pengurutan (sorting).
1
BAB II
PEMBAHASAN
1. Output merupakan urutan yang tidak menurut (nondecreasing) (setiap elemen tidak
lebih kecil dari elemen sebelumnya menurut dari urutan keseluruhan yang
diinginkan.
2. Output merupakan permutasi (pengurutan kembali) dari inputan yang diberikan.
Sejak permulaan komputasi, masalah pengurutan ini telah menarik penelitian yang
serius, mungkin dikarenakan kerumitan dari penyelesaian secara efisien disamping mudah,
dan dengan statemen yang kita mengerti. Sebagai contoh, bubble sort pertama sekali
ditemukan pada tahun 1956.[1] Walaupun banyak yang memperkirakan masalahnya telah
terselesaikan, banyak algoritme sorting baru yang masih ditemukan samap sekarang
(sebagai contoh, Library Sort yang baru dipublikasikan pertama sekali pada tahun 2006).
Algoritme sorting sangat umum pada setiap kelas pengenalan bidang Ilmu Komputer,
dimana banyaknya algoritme untuk masalah ini menyediakan pengenalan awal mengenai
banyaknya konsep algoritme inti, seperti Notasi Big O, Algoritme Pembagi, Struktur Data,
Algoritme Acak, Analisa Best, Worst, Average Case, Running Time Calculation, dan
Batas Atas dan Bawah.
2
2.2 Algoritma Pengurutan
Pengaturan (Sorting) didefinisikan sebagai pengurutan sejumlahdata berdasarkan
nilai kunci tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar
(ascending) atau sebaliknya (descending).Algoritma Sorting termasuk salah satu contoh
yangkaya akan solusi. Dalam makalah ini, hanya akan dibahas lima algoritma sorting yang
populer dipakai didunia informatika.
Bubble Sort
Bubble Sort merupakan cara pengurutan yang sederhana. Konsep dari ide dasarnya
adalah seperti “gelembung air” untuk elemen struktur data yang semestinya berada pada
posisi awal. Cara kerjanya adalah dengan berulang-ulang melakukan traversal (proses
looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal
tersebut, nilai dari dua elemen struktur data dibandingkan. Jika ternyata urutannya tidak
sesuai dengan “pesanan”, maka dilakukan pertukaran (swap). Algoritma sortingini disebut
juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen
untuk mengoperasikan elemennya.
Algoritma bubble sort dapat diringkas sebagai berikut, jika N adalah panjang
elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1,TN, maka:
Pseudocode dari bubble Sort adalah sebagai berikut;
For I = 0 to N - 2
For J = 0 to N - 2
3
Temp = A(J)
End-If
End-For
End-For
Selection Sort
Selection Sort adalah sort yang melakukan beberapa kali pass untuk melakukan
penyeleksian elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling
kecil di antara elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan
pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling
depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang
paling besar yang disimpan indeksnya kemudian ditukar.
1. Temukan nilai yang paling minimum (atau sesuai keinginan) di dalam struktur
data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling
minimum. Jika descending, maka temukan nilai yang paling maksimum.
2. Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang
belum diurutkan.
3. Ulangi langkah di atas untuk bagian struktur datayang tersisa.
Pseudocode dari selection Sort adalah sebagai berikut;
Smallsub = I
Smallsub = J
4
End-If
End-For
End-For
Insertion Sort
Metode pengurutan pada insertion sort adalah metode dengan cara menyisipkan ele
men larik pada posisi yang tepat.Cara kerja insertion sort, Pertama-tama, dilakukan iterasi,
dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian
menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan.
Dari proses iterasi, seperti biasa, terbentuklah bagian yang telah di-sorting dan bagian yang
belum di-sorting.
Pseudocode dari Insertion Sort adalah sebagai berikut;
procedure insertion;
var i,j,v: integer;
begin
5
for i:=2 to N do
begin
v:=a[i];j:=1;
while a[j1] > v do
begin a[j]:=a[j1]; j:=j1 end;
a[j]:=v;
end
end;
Merge Sort
1. Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan
daripada sebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan
langkah yangl ebih sedikit daripada membentuk sebuah list terurut dari dua buah
list tak terurut. Contoh:hanya diperlukan satu kali traversal untuk masing-masing
list jika keduanya sudahterurut.
1. Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih
panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan
ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.
Berikut ini adalah tiga proses di dalam menggunakan algoritma Merge Sort :
6
Divide : Bagi array A[l..r] dengan jumlah elemen n menjadi dua subarray
dengan jumlah elemen masingmasing subarray sebanyak n/2.
Berikut ini adalah algoritma untuk Merge Sort array A[l..r]:
Merge-Sort (A,l,r)
3. Merge-Sort(A,l,q)
4. Merge-Sort(A,q+1,r)
5. Merge(A,p,q,r)
Sedangkan algoritma untuk prosedure Merge adalah sebagai berikut :
MERGE ( A, l, q, r)
1. n1 ← q − l + 1
2. n2 ← r − q
5. do L[i] ← A[ l + i − 1]
10. i ← 1
7
11. j ← 1
12. for k ← l to r
13. do if L[i] ≤ R[ j ]
15. i ←i +1
16. else A[k] ← R[ j ]
17. j ← j +1
Quick Sort
Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R.
Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik
kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide
and conquer.
1. Jika struktur data terdiri dari 1 atau 0 elemen yang harus diurutkan, kembalikan
struktur data itu apa adanya.
2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros).
(Biasanya elemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian – satu dengan elemen-elemen yang lebih
besar daripada pivot point, dan yang lainnya dengan elemen-elemen yang lebih
kecil dari pada pivot point.
4. Ulangi algoritma secara rekursif terhadap kedua paruh struktur data.
8
Conqueror : Urutkan subarray A[l..pivot1] dan A[pivot+1..r] secara rekursif ke prosedur
quicksort
Combine : Karena subarray sudah terurut, maka array A[l..r] sudah terurut.
Pseudocode dari algoritma quick sort adalah sebagai berikut:
procedure quicksort(l,r:integer);
var pivot: integer;
begin
for r > l then
begin
pivot:=partition(l,r);
quicksort(l,pivot1);
quicksort(pivot+1,r);
end
end;
Algoritma dari partisi array A[l..r] adalah :
x := A[r]
i := l-1
for j := l to r-1
do if A[j] <= x
then i := i + 1
return i+1
9
2.3 Algoritma Pengurutan Apung
Algoritma pengurutan apung (bubble sort) diinspirasi oleh gelembung sabun yang
berada di atas permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada
berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Secara umum,
benda-benda yang berat akan terbenam dan benda-benda yang ringan akan terapung ke
permukaan.
Prinsip pengapungan di atas juga digunakan pada pengurutan apung. Apabila kita
menginginkan larik terurut naik, maka elemen yang berharga paling kecil diapungkan,
artinya diangkat ke “atas” atau ke ujung kiri larik melalui proses pertukaran. Proses
pengapungan ini dilakukan sebanyak n-1 langkah (satu langkah disebut juga satu kali pass)
dengan n adalah ukuran larik. Pada akhir setipa langkah ke-i, larik L[1..n] akan terdiri atas
dua bagian, yaitu bagian yang sudah terurut L[1..i] dan bagian yang belum terurut
L[i+1..n]. Setelah langkah terakhir, diperoleh larik L[1..n] yang terurut menaik.
Untuk mendapatkan larik yang terurut menaik, algoritma pengurutan apung secara
global sebagai berikut :
Pass 1
Mulai dari elemen ke-k=n, n-1,….2, bandingkan L[k] denagn L[k-1]. Jika, L[k]<L[k-1],
pertukarkan L[k] dengan L[k-1]. Pada akhir langkah 1, elemen L[1] berisi harga minimum
pertama.
10
Pass 2
Mulai dari elemen ke-k=n, n-1, …,3, bandingkan L[k] dengan L[k-1]. Jika,
L[k]<L[k-1], pertukarkan L[k] dengan L[k-1]. Pada akhir langkah 2, elemen L[2] berisi
harga minimum kedua, larik L[1..2] terurut sedangkan L[3..n] belum terurut.
Pass 3
Mulai dari elemen ke-k=n, n-1, …,4, bandingkan L[k] dengan L[k-1]. Jika,
L[k]<L[k-1], pertukarkan L[k] dengan L[k-1]. Pada akhir langkah 2, elemen L[2] berisi
harga minimum kedua, larik L[1..3] terurut sedangkan L[4..n] belum terurut.
Pass n-1
Mulai dari elemen ke-k=n, bandingkan L[k] dengan L[k-1]. Jika, L[k]<L[k-1],
pertukarkan L[k] dengan L[k-1]. Pada akhir pass n-1, elemen L[n-1] berisi nilai minimum
ke-(n-1) dan larik L[1..n-1] terurut menaik (elemen yang tersisa adalah L[n], tidak perlu
diurut karena hanya satu-satunya).
{ mengurutkan larik L[n-1] sehingga terurut menaik dengan metode pengurutan apung}
DEKLARASI
ALGORITMA
11
for i<–1 to n – 1 do
if L[k]<L[k-1] then
temp <–L[k]
L[k]<–L[k-1]
L[k-1]<–temp
endif
endif
endif
Untuk memperoleh larik yang terurut menurun, kita melakuka proses sebaliknya
yaitu “melemparkan” elemen yang berharga maksimum ke “atas” (ke ujung kiri larik).
Algortima nya hanya mengganti bagian L[k]<L[k-1] menjadi L[k]>L[k-1]
Ada dua variasi algoritma pengurutan seleksi ditinjau dari pemilian elemen maksimum /
minimum, yaitu :
12
Algoritma Pengurutan Seleksi-Maksimum Ascending
Tinjau larik dengan n = 6 buah elemen dibawah ini belum terurut. Larik ini akan
diurut menaik dengan metode seleksi-maksimum :
29 27 10 8 76 21
1 2 3 4 5 6
Proses 1
Cari elemen maksimum didalam larik L[1..6], maka hasilnya : maks = L[5] = 76.
Pertukaran maks dengan L[n], diperoleh :
29 27 10 8 21 76
1 2 3 4 5 6
Proses 2
21 27 10 8 29 76
1 2 3 4 5 6
Proses 3
21 8 10 27 29 76
1 2 3 4 5 6
Proses 4
10 8 21 27 29 76
1 2 3 4 5 6
Proses 5
13
Cari elemen maksimum didalam larik L[1..2], maka hasilnya : maks = L[1] = 10.
Pertukaran maks dengan L[2], diperoleh :
8 10 21 27 29 76
1 2 3 4 5 6
Sehingga tersisa satu elemen yaitu 8, maka pengurutan selesai. Larik L sudah terurut
menaik.
Kamus
Algoritma
imaks j
14
endif
endfor
temp L[i]
L[i] maks
L[imaks] tempt
endfor
Apabila ingin larik yang terurut menurun, maka algoritma pengurutan seleksi-minimum sebagai sbb :
Tinjau larik dengan n = 6 buah elemen dibawah ini yang belum terurut. Larik ini akan diurut menurun (
Descending ) dengan metode pengurutan seleksi-maksimum.
29 27 10 8 76 21
1 2 3 4 5 6
Proses 1
Cari elemen maksimum didalam larik L[1..6], maka hasilnya : imaks = 5, L[imaks] = 76.
Pertukaran L[imaks] dengan L[1], diperoleh :
76 27 10 8 29 21
1 2 3 4 5 6
Proses 2
(berdasarkan susunan larik hasil proses 1)
Cari elemen maksimum didalam larik L[2..6], maka hasilnya : imaks = 5, L[imaks] = 29.
76 29 10 8 27 21
1 2 3 4 5 6
Proses 3
(berdasarkan susunan larik hasil proses 2)
Cari elemen maksimum didalam larik L[3..6], maka hasilnya : imaks = 5, L[imaks] = 27.
15
Pertukaran L[imaks] dengan L[3], diperoleh :
76 29 27 8 10 21
1 2 3 4 5 6
Proses 4
(berdasarkan susunan larik hasil proses 3)
Cari elemen maksimum didalam larik L[4..6], maka hasilnya : imaks = 6, L[imaks] = 21.
76 29 27 21 10 8
1 2 3 4 5 6
Proses 5
(berdasarkan susunan larik hasil proses 4)
Cari elemen maksimum didalam larik L5..6], maka hasilnya : imaks = 5, L[imaks] = 10.
Pertukaran L[imaks] dengan L[5] (sebenarnya tidak perlu dilakukan sebab 10 sudah
berada pada posisi yang tepat), diperoleh :
76 29 27 21 10 8
1 2 3 4 5 6
Sehingga larik L sudah terurut menurun.
Kamus
16
Algoritma
imaks j
endif
endfor
temp L[i]
L[i] maks
L[imaks] tempt
Endfor
17
Dalam pengurutan menggunakan insertion sort ini, kita dapat memahami alur
pertukaran data dengan sebuah array . terdapat array berjumlah 8 data yang belum terurut
Dari data tersebut, di dapat bahwa dua data 14 dan 33 telah terurut. 14 telah di
anggap sebagai data terurut dan tidak akan berpindah, kemudian pengurutan melakukan
cek pada data selanjutnya yaitu 33. kemudian membandingkan 33 dengan 27
Terdapat bahwa 33 lebih besar dari 27, maka data akan berpindah. selain itu data
yang berpindah akan di bandingkan dengan data yang sudah terurut yaitu 14. maka 27
hanya berpindah ke index 1
27 berpindah
18
27 lebih besar dari 14
10 berada di index 1
data yang telah terurut. karena tidak ada data yang lebih kecil dari index
Jika data sudah ada, maka pengurutan dimulai dengan mengambil satu data dan
membandingkannya dengan data-data yang ada didepannya.
20
Jika data yang diambil memenuhi syarat perbandingan, maka data yang diambil
tersebut akan diletakan di depan data yang dibandingkan, kemudian data-data yang
dibandingkan akan bergeser mundur.
Pada php sudah ada fungsi untuk melakukan pengurutan array berdasarkan value
yakni sort() dan asort() untuk berdasarkan key yakni ksort().
sort() adalah fungsi pengurutan berdasarkan value dan mengabaikan key yang
digunakan,
asort() adalah fungsi untuk mengurutkan berdasarkan value tanpa merubah key
array yang digunakan, sedangkan
ksort() adalah fungsi untuk mengurutkan berdasarkan key array yang digunakan.
Berikut ini merupakan contoh script php yang menggunakan fungsi sort.
1$coba["3"] =
2"satu";
$coba["2"] = "dua";
3
$coba["1"] = "tiga";
4sort($coba);
5print_r($coba);
Apabila menjalankan script php tersebut dilayar browser, maka tampilan layar
browser akan seperti gambar dibawah ini.
Coba perhatikan indeks array (key) yang terdapat pada browser kamu dan indeks
yang terdapat pada script php. Apabila kamu jeli maka kamu akan tahu bahwa indeks yang
digunakan untuk menyimpan nilai array berubah. Contoh pada script php diatas indeks
array 1 digunakan untuk menyimpan nilai “tiga”, sedangkan pada browser indeks array
justru berubah menjadi 2 yang menyimpan nilai “tiga”.
21
jika indeks (key) tidak ingin berubah maka silahkan gunakan asort() untuk pengurutan.
Berikut ini merupakan contoh script php yang menggunakan fungsi asort.
1$coba["3"] =
2"satu";
$coba["2"] = "dua";
3
$coba["1"] = "tiga";
4asort($coba);
5print_r($coba);
Apabila kamu menjalankan script php tersebut dilayar browser kamu, maka tampilan layar
browser kamu akan seperti gambar dibawah ini.
Berikut ini merupakan contoh script php yang menggunakan fungsi ksort.
1$coba["3"] =
2"satu";
$coba["2"] = "dua";
3
$coba["1"] = "tiga";
4ksort($coba);
5print_r($coba);
Apabila kamu menjalankan script php tersebut dilayar browser kamu, maka tampilan layar
browser kamu akan seperti gambar dibawah ini.
Itulah kode script PHP dalam pengurutan menggunakan array. semoga info ini bisa
membantu temen semua.
22
BAB III
PENUTUP
3.1 Kesimpulan
Penjelasan diatas membahas tentang :
1. masalah pengurutan
2. algoritma pengurutan
3.2 Saran
Saya menyadari bahwa makalah ini jauh dari kata kesempurnaan sebagai mana
yang saya harapkan, maka dari itu saya butuh kritikan dan saran dari bapak dosen
pengampu dan bagi teman-teman yang membaca yang sifatnya membangun demi
kesempurnaannya makalah ini.
23
DAFTAR PUSTAKA
https://bagussjm.wordpress.com/2016/06/19/pengurutan-sisip-insertion-sort/
http://antarakojot.blogspot.co.id/2013/03/makalah-sorting.html
https://id.wikipedia.org/wiki/Algoritma_sorting
24