Anda di halaman 1dari 17

MODUL ALGORITMA DAN PEMROGRAMAN

(HIM 151)

MODUL 10
METODE SORTING & SEARCHING

DISUSUN OLEH
Ravie Kurnia Laday, S.Kom, M.Kom

UNIVERSITAS ESA UNGGUL


2020

Universitas Esa Unggul


http://esaunggul.ac.id
0 / 17
METODE SORTING & SEARCHING

A. Kemampuan Akhir Yang Diharapkan

Setelah mempelajari modul ini, diharapkan mahasiswa mampu :


1. Memahami konsep Dasar Sorting & Searching
2. Menjelaskan Pengertian Sorting
3. Menjelaskan pengertian searching
4. Memahami Contoh – Contoh Algoritma Sorting & Searching

B. Uraian dan Contoh


1. Konsep Dasar Sorting dan Searching
Sorting dan searching merupakan salah satu operasi dasar dalam ilmu
komputer. Sorting merupakan suatu proses (operasi) yang mengurutkan data
dalam suatu urutan yang diberikan (increasing atau decreasing). Searching
merupakan suatu proses (operasi) untuk mencari lokasi dari data yang
diberikan dalam suatu urutan data.
Secara tidak langsung sorting dan searching menunjuk pada operasi file yang
merupakan kumpulan suatu dari record. Masing-masing record dalam file F
dapat berisi banyak field, tetapi terdapat 1 buah field yang memiliki nilai
unique atau merupakan key yang unique dalam record tersebut. Misal field K
merupakan key unique yang disebut primary key, maka proses sorting file F
akan berdasarkan key unique tersebut dan proses searching untuk mencari
record tertentu berdasarkan nilai key unique yang diberikan.

2. Sorting
Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali
himpunan obyek menggunakan aturan tertentu
Terdapat 2 katagori dasar dalam tehnik sorting : internal sort dan external
sort. Metode Internal sort digunakan apabila koleksi data yang akan diurutkan
tidak dalam jumlah besar sehingga proses dapat dilakukan dalam main
memory. Metode External sort digunakan apabila koleksi data yang akan

Universitas Esa Unggul


http://esaunggul.ac.id
1 / 17
diurutkan dalam jumlah besar dimana koleksi data tersebut ada dalam
auxiliary memory device seperti magnetic tape atau disk. (Yang akan di bahas
adalah Internal Sort).
Misal A merupakan suatu daftar dari n elemen A1, A2, ..., An dalam memori.
Sorting A merupakan operasi yang mengatur elemen dalam A sehingga ada
dalam urutan yang terurut, misal dalam increasing order sehingga :

A1 £ A2 £ A3 £ ..... £ An

Contoh :
Misal suatu array DATA berisi 8 elemen sebagai berikut :
DATA : 77, 33, 44, 11, 88, 22, 66, 55
Setelah diurutkan :
DATA : 11, 22, 33, 44, 55, 66, 77, 88

Insertion Sort
Insertion Sort merupakan sebuah teknik pengurutan dengan cara
membandingkan dan mengurutkan dua data pertama pada array, kemudian
membandingkan data para array berikutnya apakah sudah berada di tempat
semestinya. Algorithma insertion sort seperti proses pengurutan kartu yang
berada di tangan kita. Algorithma ini dapat mengurutkan data dari besar ke
kecil (Ascending) dan kecil ke besar (Descending). Algoritma ini tidak cocok
untuk set data dengan jumlah besar karena kompleksitas dari algorithma ini
adalah Ο() di mana n adalah jumlah item.
Misal array A dengan n elemen A[1], A[2], ..... , A[N] dalam memori.
Algoritma Insertion Sort memeriksa A dari A[1] sampai dengan A[N],
menyisipkan setiap elemen A[K] ke dalam posisi yang seharusnya dalam
subarray terurut A[1], A[2], ..... , A[K-1].
Algoritma sorting ini umumnya digunakan apabila jumlah elemennya sedikit
(n kecil). Masalah yang akan muncul dengan metoda ini adalah bagaimana
cara menyisipkan A[K] ke dalam letak yang seharusnya pada subarray terurut
A[1], A[2], ....., A[K-1]. Hal ini dapat dilakukan dengan membandingkan

Universitas Esa Unggul


http://esaunggul.ac.id
2 / 17
A[K] dengan A[K-1], kemudian A[K] dengan A[K-2], A[K] dengan A[K-3]
dan seterusnya, sampai menemukan elemen A[J] dimana A[J] £ A[K].
Algoritma ini menggunakan sentinel elemen (A[0]) yang digunakan sebagai
perbandingan. Yang dimaksud dengan sentinel elemen adalah elemen yang
memiliki nilai yang sangat kecil.

Proses dari Insertion Sort

Tabel 1 Proses Insertion Sort

Contoh :
Array A dengan 8 elemen sebagai berikut :
77, 33, 44, 11, 88, 22, 66, 55
Tabel 1 menggambarkan algoritma insertion sort. Elemen yang
dilingkari menandakan A[K] dalam masing- masing proses dari algoritma,
dan tanda panah menandakan letak yang seharusnya untuk menyisipkan
A[K].

Universitas Esa Unggul


http://esaunggul.ac.id
3 / 17
Algoritma Insertion Sort :

1. A[0] = 0 {sentinel elemen}


2. Repeat langkah 3 sampai 5 untuk K = 2,3,.....,N
3. Temp := A[K] ; PTR = K - 1
4. Repeat While Temp < A[PTR]
a. A[PTR+1] = A[PTR]
b. PTR = PTR - 1 [End Of Loop]
5. A[PTR+1] = Temp [End Loop Langkah 2]
6. Return
Complexity Insertion Sort = O(n2)

Selection Sort

Selection sort merupakan sebuah teknik pengurutan dengan cara mencari nilai
tertinggi / terendah di dalam array kemudian menempatkan nilai tersebut di
tempat semestinya. Algorithma ini dapat mengurutkan data dari besar ke kecil
(Ascending) dan kecil ke besar (Descending). Algoritma ini tidak cocok
untuk set data dengan jumlah besar karena kompleksitas dari algorithma ini
adalah Ο(x2) di mana n adalah jumlah item.
Array A dengan n elemen A[1], A[2], ....., A[N] dalam memori. Algoritma
untuk mengurutkan A sebagai berikut : Pertama, cari elemen terkecil dalam
array A dan letakkan pada posisi pertama dalam array tersebut. Kemudian
cari elemen kedua terkecil dalam array A dan letakkan dalam posisi kedua
dari array tersebut, dan begitu seterusnya.
Dalam selection sort, Terdapat beberapa proses, diantaranya adalah :
Proses 1 : Cari lokasi LOC yang merupakan elemen terkecil dalam array yang
terdiri dari N elemen , A[1], A[2], ...., A[N] dan kemudian tukar
posisi A[LOC] dengan A[1].

Proses 2 : Cari lokasi LOC yang merupakan elemen terkecil dalam array yang
terdiri dari N-1 elemen , A[2], A[3], ...., A[N] dan tukar posisi

Universitas Esa Unggul


http://esaunggul.ac.id
4 / 17
A[LOC] dengan A[2]. A[1] , A[2] terurut, jika dan hanya jika A[1]
£ A[2].

Proses 3 : Cari lokasi LOC yang merupakan elemen terkecil dalam array yang
terdiri dari N-2 elemen, A[3], A[4],......, A[N] dan tukar posisi
A[LOC] dengan A[3]. A[1], A[2], A[3] terurut, jika dan hanya jika
A[2] £ A[3]. Dst................. Sehingga A akan terurut setelah N-1
proses.

Contoh :
Array A dengan 8 elemen sbb :
77, 33, 44, 11, 88, 22, 66, 55
Proses algoritma digambarkan dalam Tabel 2. Misalkan LOC berisi nilai
lokasi elemen terkecil A[K], A[K+1],...,A[N] selama proses K. Elemen yang
dilingkari merupakan elemen yang akan ditukar posisinya.
Tabel 2 Proses Selection Sort

Universitas Esa Unggul


http://esaunggul.ac.id
5 / 17
Contoh :
Algoritma :

Procedure SELECTION (A, N)


1. Repeat langkah 2 dan 3 untuk K = 1,2,.....,N-1
2. Call MIN(A, K, N, LOC)
3. Temp = A[K] ; A[K] = A[LOC] ; A[LOC] = Temp
[End Loop langkah 1]
4. Exit

Procedure MIN (A,K,N,LOC)


1. Min = A[K] ; LOC = K
2. Repeat For J = K+1, K+2, ......, N
If Min > A[J] Then Min = A[J] ; LOC = A[J] ; LOC = J [End Loop]
3. Return
Complexity (kompleksitas) algoritma Selection Sort : O(n2)

3. Merging
Misal A merupakan himpunan data terurut dengan r buah elemen dan B
himpunan data terurut dengan s buah elemen. Proses yang menggabungkan
elemen-elemen dalam A dan B menjadi himpunan elemen data terurut
tunggal, misal C dengan n = r + s buah elemen disebut dengan proses
Merging.
Secara singkat, proses Merging dapat dijelaskan sebagai berikut ; ambil
elemen pertama dari A, A[1] dan B, B[1]. Bandingkan kedua elemen tersebut.
Jika A[1] > B[1], B[1] dimasukkan dalam C, jika tidak A[1] dimasukkan
dalam C. Untuk himpunan data yang elemennya dimasukkan dalam C,
elemen yang akan dibandingkan adalah elemen berikutnya. Dan seterusnya.
Contoh :
A = 11 12 23 33 45 67
B = 9 12 21 42

Universitas Esa Unggul


http://esaunggul.ac.id
6 / 17
Disini A[1] = 11 dan B[1] = 9 dibandingkan dan A[1] > B[1], B[1]
dimasukkan dalam C. Pembandingan berikutnya A[1] = 11 dibandingkan
dengan B[2] = 12, A[1] dimasukkan dalam C, dan begitu seterusnya.

Algoritma MERGING :
1. NA = 1 ; NB = 1 dan PTR = 1
2. Repeat While NA £ R and NB £ S
If A[NA] < B[NB] then
a. C[PTR] = A[NA]
b. PTR = PTR + 1 ; NA = NA + 1
Else
a. C[PTR] = B[NB]
b. PTR = PTR + 1 ;
NB = NB + 1 [End If Structure]
[End Loop]
3. If NA > R then
Repeat For k = 0,1,2,3,.....,S-NB
C[PTR+K] = B[NB+K]
[End loop]
Else
Repeat for K = 0,1,2,3,.....,R-NA
C[PTR+K] = A[NA+K]
[End loop]
[End If Structure]
4. Exit

Kompleksitas algoritma Merging = O(n). Dengan kata lain algoritma


Merging dapat dijalankan dalam waktu yang linear.

Merge Sort

Universitas Esa Unggul


http://esaunggul.ac.id
7 / 17
Misal : Array A dangan n elemen A[1], A[2], ....., A[N] dalam memori.
Algoritma Merge Sort yang akan mengurutkan A akan digambarkan sebagai
berikut :

Contoh :

Array A berisi 6 elemen sbb :

15 12 45 56 13 10

Masing-masing proses dalam algoritma merge sort akan dimulai dari elemen
awal dalam A dan menggabungkan (merge) pasangan subarray yang terurut
sbb :

Kompleksitas dari proses merge-sort = O(n).

Tournament Sort

Tournament Sort disebut juga dengan Tree Selection Sort. Misal terdapat
elemen data sebagai berikut :

6, 25, 7, 2, 14, 10, 9, 22, 3, 14, 8, 12, 1, 30, 13.

Asumsikan bahwa batasan proses dalam memori hanya 4 buah elemen setiap
saatnya. Algoritma Tournament Sort membagi 4 elemen tersebut menjadi 2
pasangan elemen sbb :

Universitas Esa Unggul


http://esaunggul.ac.id
8 / 17
Asumsikan bahwa data tersebut akan diurutkan secara ascending, sehingga
elemen terkecil pada masing-masing pasangan di atas adalah 2 dan 6.

2 adalah elemen terkecil dan merupakan elemen pertama pada output dari

urutan yang diurutkan.

Proses yang berikutnya akan ditentukan elemen kedua dalam list terurut. 2
tidak diikutsertakan kembali.

Proses selanjutnya :

Universitas Esa Unggul


http://esaunggul.ac.id
9 / 17
Proses ketiga :

Proses Keempat :

Proses Kelima :

Pada proses keenam elemen 3 dimasukkan dalam tree :

Apabila 3 diikutkan dalam proses, maka urutan list terurut pada output akan
berantakan. Untuk mengatasinya, terdapat aturan sbb :
If Keynew < Keylastout

then keynew diletakkan dalam tree tetapi untuk sementara waktu di-
diskualifikasikan.

Catatan : Keylastout adalah key terakhir yang ada dalam list terurut.

Elemen yang didiskualifikasikan akan ditandai dengan asterisk (*). Sehingga


hasil dari proses enam adalah :

Universitas Esa Unggul


http://esaunggul.ac.id
10 / 17
Pada proses ketujuh, elemen berikutnya adalah 14. Karena elemen terakhir
dalam list terurut tidak lebih kecil dari elemen yang akan dimasukkan, yakni
14, maka elemen 14 masuk dalam list terurut.

Proses kedelapan, elemen berikutnya 8 dan elemen ini untuk sementara akan
didiskualifikasi karena 8 < dari elemen terakhir dalam list terurut yakni 14.

Proses Kesembilan :

Proses Kesepuluh, elemen berikutnya 1 :

Universitas Esa Unggul


http://esaunggul.ac.id
11 / 17
Sekarang semua elemen yang ada adalah elemen yang didiskualifikasikan.
Dan saat ini baru 9 elemen yang diurutkan. Sekarang elemen yang untuk
sementara didiskualifikasikan, dilepaskan dari diskualifikasi dan proses
dimulai kembali. Kali ini akan terbentuk list terurut kedua dari elemen-
elemen yang didiskualifikasi sebelumnya. Sehingga proses 10 :

Proses 11 Elemen 30 :

Proses 12 :

Sekarang input list kosong. Sehingga proses 13 :

Proses 14 dan 15 tidak terdapat elemen yang dimasukkan dalam tree. Hasil
akhir dari proses tournament sort ini menghasilkan 2 himpunan elemen data
yang terurut :
2, 6, 7, 9, 10, 14, 14, 22, 25
1, 3, 8, 12, 13, 30

Universitas Esa Unggul


http://esaunggul.ac.id
12 / 17
Kedua himpunan data yang terurut tersebut dapat digabungkan menjadi satu
list data terurut dengan menggunakan algoritma Merging.

Shell Sort

Shell Sort Disebut juga dengan metoda pertambahan menurun (diminishing


increment). Metoda ini dikembangkan oleh Donald L. Shell tahun 1959.
Metoda ini memanfaatkan penukaran sepasang elemen untuk mencapai
keadaan urut. Dalam hal ini jarak dua elemen yang dibandingkan dan
ditukarkan tertentu.
Pada langkah pertama, ambil elemen pertama dan kita bandingkan dengan
elemen pada jarak tertentu dari elemen pertama tersebut. Kemudian elemen
kedua dibandingkan dengan elemen lain dengan jarak yang sama. Demikian
seterusnya sampai seluruh elemen dibandingkan.
Pada contoh berikut, proses pertama kali jarak diambil separoh banyaknya
elemen yang akan diurutkan. Proses kedua jaraknya diambil separuh jarak
yang pertama, dst....
Misal terdapat elemen sebagai berikut :
23 45 12 24 56 34 27 23 16
Proses pengurutan menggunakan metoda Shell ada pada tabel 3. Dalam hal
ini elemen yang ditulis miring adalah elemen yang dibandingkan dan
kemudian ditukar, jika perlu.
Tabel 3 Proses Pengurutan Metode Shell Sort

Universitas Esa Unggul


http://esaunggul.ac.id
13 / 17
4. Searching
Pencarian data sering disebut juga dengan istilah table look- up atau storage
and retrieval information, adalah suatu proses untuk mengumpulkan sejumlah
informasi di dalam pengingat komputer dan kemudian mencari kembali
informasi yang diperlukan.

Sequential Searching
Metode yang paling sederhana dari sejumlah metode pencarian adalah
metoda pencarian berurutan (sequential searching). Secara singkat metode ini
dapat dijelaskan sebagai berikut :
Dari elemen-elemen yang diketahui, data yang dicari dibandingkan satu
persatu sampai data tersebut ditemukan atau tidak ditemukan.

Algoritma Sequential Searching :


1. Baca himpunan data yang diketahui, misalnya sebagai himpunan A
dengan N elemen.
2. Baca data yang dicari, misal Data
3. Ada = False
4. For I = 1 to N proses langkah 5
5. If Data = A[I] then
Ada = True ; Posisi = I ; I = N
6. If Ada = False Then
N = N+1 ; A[I] = Data
7. Selesai

Skema Move to the front


Pada skema pencarian sekuensial move to the front, apabila proses pencarian
berhasil, maka record tersebut dipindahkan pada posisi pertama dari daftar
tersebut. Record pertama menjadi record kedua dan seterusnya.

Metode move to the front ini, prosesnya lebih baik apabila menggunakan
linked list dibandingkan dengan array.

Universitas Esa Unggul


http://esaunggul.ac.id
14 / 17
Skema Transposition
Pada skema pencarian sekuensial transposition, apabila prose pencarian
berhasil, maka record tersebut dipindahkan pada posisi berikutnya. Kedua
skema di atas (move to the front dan transposition) didasarkan pada
kemungkinan proses pencarian apabila elemen data yang di cari akan
digunakan dan dicari kembali.

Universitas Esa Unggul


http://esaunggul.ac.id
15 / 17
C. Daftar Pustaka
1. Rinaldi Munir. (2000). Algoritma dan Pemrograman Jilid 1 dan jilid 2.
Penerbit ITB.
2. Deitel. (2001). C++ How To Program. Prentice Hall
3. Suprapto. (2008). Bahasa pemrograman.
4. Sukamto, Rosa Ariani. 2010. Diktat kuliah algoritma dan pemrograman II
5. A.S, R. (2018). LOGIKA ALGORITMA dan PEMROGRAMAN
DASAR. BANDUNG: MODULA.
6. Sjukani, M. (2014). Algoritma dan Struktur Data 1 dengan C, C++ dan
Java (Edisi 9 ed.). Jakarta: MItra Wacana Media.
7. Davis, S. R. (2014). C++ For Dummies (7th ed.). John Wiley & Sons, Inc.
8. Deitel, P., & Deitel, H. (2014). C++ How To Program (9th ed.). United
State of America: Pearson.

Universitas Esa Unggul


http://esaunggul.ac.id
16 / 17

Anda mungkin juga menyukai