Anda di halaman 1dari 14

SEARCHING & SORTING

Pendahuluan
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 uni ue atau merupakan key yang uni ue dalam record tersebut. Misal field ! merupakan key uni ue yang disebut primary key, maka proses sorting file F akan berdasarkan key uni ue tersebut dan proses searching untuk mencari record tertentu berdasarkan nilai key uni ue yang diberikan.

Sorting
"erdapat # katagori dasar dalam tehnik sorting $ internal sort dan external sort. Metoda Internal sort digunakan apabila koleksi data yang akan diurutkan tidak dalam jumlah besar sehingga proses dapat dilakukan dalam main memory. Metoda External sort digunakan apabila koleksi data yang akan diurutkan dalam jumlah besar dimana koleksi data tersebut ada dalam au%iliary memory de&ice seperti magnetic tape atau disk. (Yang akan di bahas adalah Internal Sort). Misal ' merupakan suatu daftar dari n elemen ' 1, '#, ..., 'n dalam memori. Sorting ' merupakan operasi yang mengatur elemen dalam ' sehingga ada dalam urutan yang terurut, misal dalam increasing order sehingga $ '1 '# '( ..... 'n Contoh $ Misal suatu array )'"' berisi * elemen sebagai berikut $ )'"' $ Setelah diurutkan $ )'"' $ 11, ##, ((, ,,, .., --, ++, ** ++, ((, ,,, 11, **, ##, --, ..

70

Insertion Sort
Misal array ' dengan n elemen '/10, '/#0, ..... , '/10 dalam memori. 'lgoritma 2nsertion Sort memeriksa ' dari '/10 sampai dengan '/10, menyisipkan setiap elemen '/!0 ke dalam posisi yang seharusnya dalam subarray terurut '/10, '/#0, ..... , '/!-10. 'lgoritma sorting ini umumnya digunakan apabila jumlah elemennya sedikit (n kecil). Masalah yang akan muncul dengan metoda ini adalah bagaimana cara menyisipkan '/!0 ke dalam letak yang seharusnya pada subarray terurut '/10, '/#0, ....., '/!-10. 3al ini dapat dilakukan dengan membandingkan '/!0 dengan '/!-10, kemudian '/!0 dengan '/!-#0, '/!0 dengan '/!-(0 dan seterusnya, sampai menemukan elemen '/40 dimana '/40 '/!0. 'lgoritma ini menggunakan sentinel elemen ('/50) yang digunakan sebagai perbandingan. 6ang dimaksud dengan sentinel elemen adalah elemen yang memiliki nilai yang sangat kecil. Penggam aran !roses Insertion Sort "
Proses ! 7 1$ ! 7 #$ ! 7 ($ ! 7 ,$ ! 7 .$ ! 7 -$ ! 7 +$ ! 7 *$ 8rutan $ A#$% - - - - - - - - - A#&% ++ ++ (( (( 11 11 11 11 11 A#'% (( (( ++ ,, (( (( ## ## ## A#(% ,, ,, ,, ++ ,, ,, (( (( ((
Tabel 1.1

A#)% 11 11 11 11 ++ ++ ,, ,, ,,

A#*% ** ** ** ** ** ** ++ -..

A#+% ## ## ## ## ## ## ** ++ --

A#,% -------** ++

A#-% .. .. .. .. .. .. .. .. **

9ontoh $

71

'rray ' dengan * elemen sebagai berikut $ ++, ((, ,,, 11, **, ##, --, .. "abel 1.1 menggambarkan algoritma insertion sort. :lemen yang dilingkari menandakan '/!0 dalam masing-masing proses dari algoritma, dan tanda panah menandakan letak yang seharusnya untuk menyisipkan '/!0.
Algoritma Insertion Sort " 1. '/50 7 5 ;sentinel elemen< #. =epeat langkah ( sampai . untuk ! 7 #,(,.....,1 (. "emp $7 '/!0 > ?"= 7 ! - 1 ,. =epeat @hile "emp A '/?"=0 a. '/?"=B10 7 '/?"=0 b. ?"= 7 ?"= - 1 /:nd Cf Doop0 .. '/?"=B10 7 "emp /:nd Doop Dangkah #0 -. =eturn 9omple%ity 2nsertion Sort 7 C(n#)

Selection Sort
'rray ' dengan n elemen '/10, '/#0, ....., '/10 dalam memori. 'lgoritma untuk mengurutkan ' sebagai berikut $ ?ertama, cari elemen terkecil dalam array ' dan letakkan pada posisi pertama dalam array tersebut. !emudian cari elemen kedua terkecil dalam array ' dan letakkan dalam posisi kedua dari array tersebut, dan begitu seterusnya. ?roses 1 $ 9ari lokasi DC9 yang merupakan elemen terkecil dalam array yang terdiri dari 1 elemen , '/10, '/#0, ...., '/10 dan kemudian tukar posisi '/DC90 dengan '/10. ?roses # $ 9ari lokasi DC9 yang merupakan elemen terkecil dalam array yang terdiri dari 1-1 elemen , '/#0, '/(0, ...., '/10 dan tukar posisi '/DC90 dengan '/#0. '/10 , '/#0 terurut, jika dan hanya jika '/10 '/#0. ?roses ( $ 9ari lokasi DC9 yang merupakan elemen terkecil dalam array yang terdiri dari 1-# elemen, '/(0, '/,0,......, '/10 dan tukar posisi '/DC90 dengan '/(0. '/10, '/#0, '/(0 terurut, jika dan hanya jika '/#0 '/(0. )st................. Sehingga ' akan terurut setelah 1-1 proses. 9ontoh > 'rray ' dengan * elemen sbb $ ++, ((, ,,, 11, **, ##, --, ..

72

?roses algoritma digambarkan dalam Tabel 1.2. Misalkan DC9 berisi nilai lokasi elemen terkecil '/!0, '/!B10,...,'/10 selama proses !. :lemen yang dilingkari merupakan elemen yang akan ditukar posisinya.

Proses ! 7 1 > DC9 7 , ! 7 # > DC9 7 ! 7 ( > DC9 7 ! 7 , > DC9 7 ! 7 . > DC9 7 * ! 7 - > DC9 7 + ! 7 + > DC9 7 + 8rutan $

A#&% ++ 11 11 11 11 11 11 11

A#'% (( (( ## ## ## ## ## ##

A#(% ,, ,, ,, (( (( (( (( ((

A#)% 11 11 ++ ++ ,, ,, ,, ,,

A#*% ** ** ** ** ** .. .. ..

A#+% ## ## (( ,, ++ ++ ---

A#,% ------++ ++

A#-% .. .. .. .. .. ** ** **

Tabel 1.2

Algoritma " Procedure SE.ECTION /A0 N1 1. =epeat langkah # dan ( untuk ! 7 1,#,.....,1-1 #. 9all M21(', !, 1, DC9) (. "emp 7 '/!0 > '/!0 7 '/DC90 > '/DC90 7 "emp /:nd Doop langkah 10 ,. :%it Procedure MIN /A020N0.OC1 1. Min 7 '/!0 > DC9 7 ! #. =epeat For 4 7 !B1, !B#, ......, 1 2f Min E '/40 "hen Min 7 '/40 > DC9 7 '/40 > DC9 7 4 /:nd Doop0 (. =eturn 9omple%ity (kompleksitas) algoritma Selection Sort $ C(n #)

73

Merging
Misal ' merupakan himpunan data terurut dengan r buah elemen dan F himpunan data terurut dengan s buah elemen. ?roses yang menggabungkan elemen-elemen dalam ' dan F menjadi himpunan elemen data terurut tunggal, misal 9 dengan n 7 r B s buah elemen disebut dengan proses Merging.

74

Secara singkat, proses Merging dapat dijelaskan sebagai berikut > ambil elemen pertama dari ', '/10 dan F, F/10. Fandingkan kedua elemen tersebut. 4ika '/10 E F/10, F/10 dimasukkan dalam 9, jika tidak '/10 dimasukkan dalam 9. 8ntuk himpunan data yang elemennya dimasukkan dalam 9, elemen yang akan dibandingkan adalah elemen berikutnya. )an seterusnya. 9ontoh $ ' 7 11 1# #( (( ,. F 7 G 1# #1 ,# -+

)isini '/10 7 11 dan F/10 7 G dibandingkan dan '/10 E F/10, F/10 dimasukkan dalam 9. ?embandingan berikutnya '/10 7 11 dibandingkan dengan F/#0 7 1#, '/10 dimasukkan dalam 9, dan begitu seterusnya. Algoritma MERGING " 1. 1' 7 1 > 1F 7 1 dan ?"= 7 1 #. =epeat @hile 1' = and 1F S 2f '/1'0 A F/1F0 then a. 9/?"=0 7 '/1'0 b. ?"= 7 ?"= B 1 > 1' 7 1' B 1 :lse a. 9/?"=0 7 F/1F0 b. ?"= 7 ?"= B 1 > 1F 7 1F B 1 /:nd 2f Structure0 /:nd Doop0 (. 2f 1' E = then =epeat For k 7 5,1,#,(,.....,S-1F 9/?"=B!0 7 F/1FB!0 /:nd loop0 :lse =epeat for ! 7 5,1,#,(,.....,=-1' 9/?"=B!0 7 '/1'B!0 /:nd loop0 /:nd 2f Structure0 ,. :%it !ompleksitas algoritma Merging 7 C(n). )engan kata lain algoritma Merging dapat dijalankan dalam Haktu yang linear.

Merge Sort
Misal $ 'rray ' dangan n elemen '/10, '/#0, ....., '/10 dalam memori. 'lgoritma Merge Sort yang akan mengurutkan ' akan digambarkan sebagai berikut $ 9ontoh $

75

'rray ' berisi - elemen sbb $ 1. 1# ,. .-

1(

15

Masing-masing proses dalam algoritma merge sort akan dimulai dari elemen aHal dalam ' dan menggabungkan (merge) pasangan subarray yang terurut sbb $
1. 1# ,. ,. ..1( 15 151( 15 1( .-

1# 1.

1# 1. ,. .-

15 1# 1( 1. ,.

!ompleksitas dari proses merge-sort 7 C(n).

Tournament Sort
"ournament Sort disebut juga dengan Tree Selection Sort. Misal terdapat elemen data sebagai berikut $ -, #., +, #, 1,, 15, G, ##, (, 1,, *, 1#, 1, (5, 1(. 'sumsikan bahHa batasan proses dalam memori hanya , buah elemen setiap saatnya. 'lgoritma "ournament Sort membagi , elemen tersebut menjadi # pasangan elemen sbb $ #. + # 'sumsikan bahHa data tersebut akan diurutkan secara ascending, sehingga elemen terkecil pada masing-masing pasangan di atas adalah # dan -. #. + # #

# adalah elemen terkecil dan merupakan elemen pertama pada output dari urutan yang diurutkan. #. # # + # # 76

?roses yang berikutnya akan ditentukan elemen kedua dalam list terurut. # tidak diikutsertakan kembali. #. + I ?roses selanjutnya $ #. + 1, ?roses ketiga $ 15 #. + 1, ?roses keempat $ 15 #. G 1, ?roses kelima $ 15 #. ## 1, 15 15 1, #, -, +, G, 15 15 G G #, -, +, G 15 + + #, -, + + #, + #, -

77

?ada proses keenam elemen ( dimasukkan dalam tree $ ( #. ## 1, 1,

'pabila ( diikutkan dalam proses, maka urutan list terurut pada output akan berantakan. 8ntuk mengatasinya, terdapat aturan sbb $ 2f !eyneH A !eylastout then keyneH diletakkan dalam tree tetapi untuk sementara Haktu didiskualifikasikan. Catatan $ !eylastout adalah key terakhir yang ada dalam list terurut. :lemen yang didiskualifikasikan akan ditandai dengan asterisk (I). Sehingga hasil dari proses enam adalah $ I( #. #. 1, #, -, +, G, 15, 1, ## 1, 1, ?ada proses ketujuh, elemen berikutnya adalah 1,. !arena elemen terakhir dalam list terurut tidak lebih kecil dari elemen yang akan dimasukkan, yakni 1,, maka elemen 1, masuk dalam list terurut. I( #. #. 1, #, -, +, G, 15, 1,, 1, ## 1, 1, ?roses kedelapan, elemen berikutnya * dan elemen ini untuk sementara akan didiskualifikasi karena * A dari elemen terakhir dalam list terurut yakni 1,. I( #. #. ## #, -, +, G, 15, 1,, 1,, ## ## ## I* ?roses kesembilan $ I( #. #. #. #, -, +, G, 15, 1,, 1,, ##, #.

78

I1# I*

?roses kesepuluh, elemen berikutnya 1 $ I( I1 I1# I* Sekarang semua elemen yang ada adalah elemen yang didiskualifikasikan. )an saat ini baru G elemen yang diurutkan. Sekarang elemen yang untuk sementara didiskualifikasikan, dilepaskan dari diskualifikasi dan proses dimulai kembali. !ali ini akan terbentuk list terurut kedua dari elemen-elemen yang didiskualifikasi sebelumnya. Sehingga proses 15 $

( 1 1# * ?roses 11, elemen (5 $ ( (5 1# * ?roses 1# $ 1( (5 1# *

1 1 * #, -, +, G, 15, 1,, 1,, ##, #. 1

( ( * #, -, +, G, 15, 1,, 1,, ##, #. 1, (

1( * * #, -, +, G, 15, 1,, 1,, ##, #. 1, (, *

Sekarang input list kosong. Sehingga proses 1( $ 1( (5 1# I 1( 1# 1# #, -, +, G, 15, 1,, 1,, ##, #. 1, (, *, 1#

79

?roses 1, dan 1. tidak terdapat elemen yang dimasukkan dalam tree. 3asil akhir dari proses tournament sort ini menghasilkan # himpunan elemen data yang terurut $

#, -, +, G, 15, 1,, 1,, ##, #. 1, (, *, 1#, 1(, (5 !edua himpunan data yang terurut tersebut dapat digabungkan menjadi satu list data terurut dengan menggunakan algoritma Merging.

Shell Sort
)isebut juga dengan metoda pertambahan menurun (diminishing increment). Metoda ini dikembangkan oleh )onald D. Shell tahun 1G.G. Metoda ini memanfaatkan penukaran sepasang elemen untuk mencapai keadaan urut. )alam hal ini jarak dua elemen yang dibandingkan dan ditukarkan tertentu. ?ada langkah pertama, ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. !emudian elemen kedua dibandingkan dengan elemen lain dengan jarak yang sama. )emikian seterusnya sampai seluruh elemen dibandingkan. ?ada contoh berikut, proses pertama kali jarak diambil separoh banyaknya elemen yang akan diurutkan. ?roses kedua jaraknya diambil separuh jarak yang pertama, dst.... Misal terdapat elemen sebagai berikut $ #( ,. 1# #, .(, #+ #( 1-

?roses pengurutan menggunakan metoda Shell ada pada tabel 1.(. )alam hal ini elemen yang ditulis miring adalah elemen yang dibandingkan dan kemudian ditukar, jika perlu.

3ara4 'Hal 4arak 7 ,

A#&% #( 23 #(

A#'% ,. ,. 45

A#(% 1# 1# 1#

A#)% #, #, #,

A#*% .56 .-

A#+% (, (, 34

A#,% #+ #+ #+

A#-% #( #( #(

A#5% 111-

80

#( #( #( #( 4arak 7 # 23 1# 1# 1# 1# 1# 1# 1# 12 1# 1# 1# 1# 1# 1# 1# 1# 1#

(, (, (, (, (, 34 #( #( #( #( #( #( 23 23 11111111-

12 1# 1# 1# 12 #( 23 11111116 23 #( #( #( #( #( #( #(

#, 24 #( #( #( 23 (, 34 (, (, (, (, (, (, 34 34 #( #( #( #( #( #(

..56 11116 #( 23 #( #( #( #( #( #( 23 34 #, #, #, #, #,

,. ,. ,. ,. ,. ,. ,. 45 ,. 45 #, #, #, #, #, #, 24 34 #+ #+ #+ #+

27 #+ #+ #+ #+ #+ #+ #+ 27 #+ 27 #+ #+ #+ #+ #+ #+ 27 34 (, (, (,

#( 23 #, #, #, #, #, #, #, 24 ,. ,. ,. ,. ,. ,. ,. ,. 45 45 ,. ,.

1116 .......56 ........56 ..-

4arak 7 1

'khir

Searching
?encarian 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 .

Se6uential Searching
Metoda yang paling sederhana dari sejumlah metoda pencarian adalah metoda pencarian berurutan (sequential searching). Secara singkat metoda ini dapat dijelaskan sebagai berikut $ )ari elemen-elemen yang diketahui, data yang dicari dibandingkan satu persatu sampai data tersebut ditemukan atau tidak ditemukan. Algoritma Se6uential Searching " 1. Faca himpunan data yang diketahui, misalnya sebagai himpunan ' dengan 1 elemen. #. Faca data yang dicari, misal )ata (. 'da 7 False ,. For 2 7 1 to 1 proses langkah . .. 2f )ata 7 '/20 then 'da 7 "rue > ?osisi 7 2 > 2 7 1 -. 2f 'da 7 False "hen 1 7 1B1 > '/20 7 )ata +. Selesai 81

S4ema Mo7e To The 8ront


?ada skema pencarian sekuensial mo&e to the front, apabila proses pencarian berhasil, maka record tersebut dipindahkan pada posisi pertama dari daftar tersebut. =ecord pertama menjadi record kedua dan seterusnya. Metoda mo&e to the front ini, prosesnya lebih baik apabila menggunakan linked list dibandingkan dengan array. ( cari alasannya, mengapa J)

82

S4ema Trans!osition
?ada skema pencarian sekuensial transposition, apabila prose pencarian berhasil, maka record tersebut dipindahkan pada posisi berikutnya. !edua skema di atas (mo&e to the front dan transposition) didasarkan pada kemungkinan proses pencarian apabila elemen data yang di cari akan digunakan dan dicari kembali. (Cari kelebihan dan kekurangan kedua skema di atas dengan penggambaran secara linked list dan array !

83

Anda mungkin juga menyukai