S
O
R
T
IN
Pen gertian Algoritm a Pen gurutan
(sortin g)
(sortin g)
• Dalam ilm u kom puter, algoritm a pen gurutan adalah Dalam ilm u kom puter, algoritm a pen gurutan adalah
• algoritm a yan g m eletakkan elem en -elem en suatu kum pulan
data dalam urutan terten tu. Atau
• proses pen gurutan data yg sebelum n ya disusun secara acak • proses pen gurutan data yg sebelum n ya disusun secara acak
sehin gga m en jadi tersusun secara teratur m en urut suatu aturan terten tu.
• Yan g pada ken yataan n ya ‘urutan terten tu’ yang um um • Yan g pada ken yataan n ya urutan terten tu yan g um um
digun akan adalah secara terurut secara n um erikal ataupun secara leksikografi (urutan secara abjad sesuai kam us).
Ad j i i A di ( ik) & D di
• Ada 2 jen is sortin g : Ascen din g (n aik) & Descen din g
Klasifikasi Algoritm aPen gurutan
(sortin g)
y Exc h a n g e S o r t
m elakukan pem ban din gan an tar data, dan m elakukan pem ban din gan an tar data, dan m elakukan pertukaran apabila urutan yan g didapat belum sesuai.
Con tohn ya : Bubble sort, Cocktail sort, Com b sort, Gn om e sort, Quicksort.
y S e le c t io n S o r t
i l t t t k dil t kk di
m en cari elem en yan g tepat untuk diletakkan di posisi yan g telah diketahui, dan m eletakkan n ya di posisi tersebut setelah data tersebut
ditem ukan . ditem ukan .
y In s e r t io n S o r t
m en cari tem pat yan g tepat un tuk suatu elem en data yan g telah diketahui ke dalam subkum pulan data yan g telah terurut,
kem udian m elakukan pen yisipan (in sertion) data di tem pat yan g tepat tersebut
tepat tersebut.
Con tohn ya adalah : In sertion sor, Shell sort, Tree sort, Library sort, Patien ce sortin g.
y M e r g e S o r t
d t dib i j di bk l bk l k di
data dibagi m en jadi subkum pulan -subkum pulan yan g kem udian subkum pulan tersebut diurutkan secara terpisah, dan kem udian digabun gkan kem bali den gan m etode m erging. algoritm a in i m elakukan m etode pen gurutan m erge sort juga untuk
k bk l d b d k l i
m engurutkan subkum pulan data tersebut, atau den gan kata lain , pengurutan dilakukan secara rekursif.
y N o n -Co m p a r is o n S o r t
proses pen gurutan data yan g dilakukan proses pen gurutan data yan g dilakukan
algoritm a in i tidak terdapat pem ban din gan an tardata, data diurutkan sesuai den gan
pigeon hole prin ciple.
Con tohn ya adalah : R adix sort, Bucket sort, Coun tin g sort,
Id e D a s a r
y Ide dasar dari m etode R adix sort in i adalah
m en gkategorikan data-data m en jadi sub kum pulan
subkum pulan data sesuai den gan n ilai radix-n ya,
k k t i k di
m en gkon katen asin ya, kem udian
m en gkategorikan n ya kem bali berdasar n ilai radix
Im p le m e n ta s i Ra d ix S o rt
• Con toh im plem en tasi yan g akan dilakukan adalah p y g
im plem en tasi pada bilan gan bulat positif
m en ggun akan salah satu algoritm a pen gurutan
di t
radix sort.
• Con tohn ya adalah pen gurutan sebuah kum pulan
Pertam a kali, data dibagi-bagi sesuai den gan digit terkan an
y H asil pen gkategorian tersebut lalu digabun g
y H asil pen gkategorian tersebut lalu digabun g
kem bali den gan m etode kon katen asi m en jadi :
y Kem udian pen gkategorian dilakukan
y Kem udian pen gkategorian dilakukan
Kem udian lan gkah ketiga, atau lan gkah terakhir g g , g pada con toh in i adalah pen gkategorian kem bali berdasar digit yan g terkiri, atau yan g palin g
i ifik
y Yan g kem udian dikon katen asi lagi m en jadi
y Yan g kem udian dikon katen asi lagi m en jadi
y Yan g m erupakan hasil akhir dari m etode
y Yan g m erupakan hasil akhir dari m etode
pen gurutan in i. Di m an a data telah terurut den gan
Algo ritm a d a n Ko m p le ks ita s W a ktu
R a d ix S o r t
R a d ix S o r t
y Im plem en tasi dari algoritm a tersebut dibuat p g
m en ggun akan bahasa Pascal, yan g direalisasikan
den gan m en ggun akan queue sebagai represen tasi
ti k t i di t k k t i
tiap kategori radix un tuk pen gkategorian .
y Array A adalah array in put, dan array B adalah
array A yan g sudah terurut
Pro ce d u re RadixSort (A : TArray; va r B : TArray; d : byte);
va r
KatRadix : a rra y [0..9] o f Queue; i t i t
i, x, ctr : integer; pem bagi : lon gword;
be gin
{--- m en gkopi A ke B ---}
fo r i:=1 to n d o
B[i] := A[i]; pem bagi := 1;
fo r x:=1 to d d o be gin
{ i i i li i K R di } {--- inisialisasi KatRadix ---}
fo r i:=0 to 9 d o
In itQueue (KatRadix[i]); {--- dikategorikan ---}
fo r i:=1 to n d o fo r i: 1 to n d o
En queue (KatRadix [(B[i] d iv pem bagi) m o d 10], B[i]); B[i] := 0 ;
{--- dikon kat ---} ctr := 0 ;
fo r i:=0 to 9 d o b e gin
w h ile (N OT IsQueueEm pty (KatRadix[i])) d o b e gin ctr := ctr + 1; B[ctr]:=DeQueue (KatRadix [i]);
e n d;
e n d;
e n d;
pem bagi := pem bagi * 10;
e n d;
Id e B u b b le S o rt
o Algoritm a dim ulai dari elem en palin g awal.
o 2 buah elem en pertam a dari list diban din gkan .
o J ika elem en pertam a lebih besar dari elem en
kedua dilakukan pertukaran kedua,dilakukan pertukaran .
o Lan gkah 2 dan 3 dilakukan lagi terhadap elem en
kedua dan ketiga, seterusn ya sam pai ke ujun g g , y p j g
elem en
o Bila sudah sam pai ke ujun g dilakukan lagi ke awal
i tid k d t j di l i t k l
sam pai tidak ada terjadi lagi pertukaran elem en .
o Bila tidak ada pertukaran elem en lagi, m aka list
Algo ritm a
B u b b le S o r t
y Setiap pasan gan data: x[j] den gan x[j-1], un tuk
sem ua i=1,...,n -1 harus m em en uhi keterurutan , yaitu x[j] > x[j-1].
b l d k h k k d d
y Apabila tidak m em en uhi m aka posisi kedua data
harus ditukar.
U t k k i l k
y Un tuk pem rogram an kon ven sion al m aka
pem eriksaan -pem eriksaan pasan gan tersebut harus dilakukan satu dem i satu, m isaln ya oleh harus dilakukan satu dem i satu, m isaln ya oleh
bubble-sort dilakukan dari kan an ke kiri serta di
y Pada iterasi ke-i, pem eriksaan tsb. dilakukan pula dalam loop-for bb
sbb. d e s krip s i
adatukar true I 1
I 1
While (I<n ) an d (adatukar) do J 1
Adatukar false
While j <= (n -I) do While j < (n I) do If x[j] > x[j+1] then
Adatukar true tem p x[j] X[j] x[j+1][j] [j ] x[j+1] tem p endif
y Loop-for tersebut akan m en ggeser bilan gan p b gg b g terkecil ke posisi i.
y Loop-for dilakukan han ya sam pai ke i karen a pada
iterasi ke-i data dalam x[0 ], x[1], ..., x[I 1]
m erupakan yan g palin g kecil dan sudah terurut
h il dil k k ti l
hasil pen geseran yan g dilakukan setiap loop sebelum n ya.
y Oleh sebab itu iterasi han ya dilakukan un tuk harga
y Oleh sebab itu iterasi han ya dilakukan un tuk harga
Im p le m e n ta s i
B u b b le S o r t
Pada gam bar di bawah, pegecekan dim ulai dari data yan g Pada gam bar di bawah, pegecekan dim ulai dari data yan g palin g akhir, kem udian di ban din gkan den gan data di
depan n ya, jika data di depan n ya lebih besar m aka akan ditukar
Tidak ada pen ukaran k
karen a 3<8
Pen gurutan Berhen ti Di Sin i Pen gurutan Berhen ti Di Sin i
•
Pada proses kedua, pen gecekan dilakukan
i d
d t k
k
d t
t
Pen gurutan Berhen ti Di Sin i
Tidak ada pen ukaran p karen a 10 <15
Pen gurutan berhen ti di sin i
y Keuntun gan lain dari algoritm a in i adalah dapat dijalan kan den gan
k d f k k l d h
g g p j g
cukup cepat dan efisien untuk m engurutkan list yan g urutan n ya sudah ham pir ben ar.
y Selain kasus terbaik tersebut, kom leksitas un tuk algoritm a in i adalah
O(n² ).
y Karen an ya algoritm a in i term asuk san gat tidak efisien un tuk dilakukan ,
apalagi jika pen gurutan dilakukan terhadap elem en yan g ban yak jum lahnya.
y Biasan ya Biasan ya bubble sortbubble sort digun akan un tuk m en gen alkan kon sep dari sortin g digun akan un tuk m en gen alkan kon sep dari sortin g
PENDAH ULUAN
y Metode selection sort m erupakan perbaikan dari m etode bubble sort den gan m en guran gi jum lah perban din gan .
y Selection sort m erupakan m etode pen gurutan yan g
m en cari n ilai data terbesar atau terkecil dan kem udian m en cari n ilai data terbesar atau terkecil dan kem udian m en em patkan n ya pada posisi yan g seben arn ya, dim ulai dari data diposisi 0 hin gga data diposisi N-1.
y Sedan gkan m etode in sertion sort adalah m etode
pen gurutan yan g biasa dipakai oleh pem ain kartu dalam m en gurutkan kartun ya yaitu m en yisipkan kartu den gan m en gurutkan kartun ya, yaitu m en yisipkan kartu den gan n ilai yan g lebih kecil ke posisi sebelum kartu
y Selection Sort m erupakan kom bin asi an tara sortin g dan searchin g
searchin g.
y Un tuk setiap proses, akan dicari elem en -elem en yan g
belum diurutkan yan g m em iliki n ilai terkecil atau terbesar akan dipertukarkan ke posisi yan g tepat di dalam array akan dipertukarkan ke posisi yan g tepat di dalam array.
y Misaln ya un tuk putaran pertam a, akan dicari data den gan n ilai terkecil dan data in i akan ditem patkan di in deks
terkecil (data[0 ]) pada putaran kedua akan dicari data terkecil (data[0 ]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditem patkan di in deks kedua (data[1]).
y Selam a proses pem ban din gan dan pen gubahan han ya
y Selam a proses, pem ban din gan dan pen gubahan han ya
y Tehn ik pen gurutan dgn cara pem ilihan elem en atau proses kerja dgn m em ilih elem en data terkecil utk kem udian
dibe ja dgdi k e die ek e data tek d l ec utd de ud al d dibandingkan & ditukarkan dgn elem en pd data awal, dst s/ d seluruh elem en shg akan m en ghasilkan pola data yg telah disort.
y Ke le b ih a n d a n ke ku ra n ga n S e le ctio n S o rt:g
{ Kom pleksitas selection sort relatif lebih kecil.
{ Mudah m en ggabun gkan n ya kem bali, tetapi sulit m em bagi m asalah.
{ Mem butuhkan m ethod tam bahan .
y Kondisi awal:
{ Un sorted list = data
{ Sorted list koson g
{ Sorted list = koson g
y Am bil yan g terbaik (select) dari un sorted list, tam bahkan
di belakang sorted list.
L k k t i t d li t h bi
Selection sort con toh
40 2 1 43 3 65 0 -1 58 3 42 4
Selection sort con toh
40 2 1 43 3 4 0 1 58 3 42 65
40 2 1 43 3 65 0 1 58 3 42 4
40 2 1 43 3 4 0 1 42 3 58 65
40 2 1 43 3 4 0 -1 58 3 42 65
40 2 1 43 3 4 0 -1 42 3 58 65
42
Selection sort: Con toh (lan j.)
42
40 2 1 3 3 4 0 1 42 43 58 65
40 2 1 3 3 4 0 -1 43 58 65
42
-1 2 1 3 3 4 0 40 43 58 65
42
-1 2 1 3 3 0 4 40 43 58 65
42
Selection sort: Con toh (lan j.)
42
-1 2 1 0 3 3 4 40 43 58 65
1
42
-1 2 1 0 3 3 4 40 43 58 65
42
-1 0 2 3 3 4 40 43 58 65
1 42
-1 0 2 3 3 4 40 43 58 65
1 42
0 2 3 3 4 40 43 58 65
-1
1 42
0 2 3 3 4 40 43 58 65
In s e rtio n S o rt
In s e rtio n S o rt
y
Prin sip dasar In sertion adalah secara berulan
g-l
i i k
/
k
ti
l
k
ulan g m en yisipkan / m em asukan setiap elem en. ke
dlm posisin ya / tem patn ya yg ben ar.
y
Mirip den gan cara oran g
Mirip den gan cara oran g
m e n gu ru tka n
m e n gu ru tka n
kartu,
kartu,
selem bar dem i selem bar kartu diam bil dan
d is is ip ka n
(in sert) ke tem pat yan g seharusn ya.
y
Pen gurutan dim ulai dari data ke 2 sam pai den gan
y
Pen gurutan dim ulai dari data ke-2 sam pai den gan
data terakhir, jika ditem ukan data yan g
le bih
ke cil
, m aka akan ditem patkan (
d iin s e rt
) diposisi
h
P d
i i
l
k
In s e rtio n S o rt
y Kon disi awal:
{ Un sorted list = data
{ Sorted list = koson g
y Am bil sem baran g elem en dari un sorted list, sisipkan
(in sert) pada posisi yan g ben ar dalam sorted list.
L k k t i t d li t h bi
y Lakukan terus sam pai un sorted list habis.
In sertion sort: Con toh
40 2 1 43 3 65 0 -1 58 3 42 4
40
2 40 1 43 3 65 0 -1 58 3 42 4
In sertion sort: Con toh (lan j.)
1 2 40 43 3 65 0 -1 58 3 42 4
1 2 3 40 43 65 0 -1 58 3 42 4
In sertion sort: Con toh (lan j.)
1 2 3 40 43 65 0 -1 58 3 42 4
1 2 3 40 43 65
0 -1 58 3 42 4
1 2 3 40 43 65
0 0 1 2 3 40 43 65 58 3 42 4
In sertion sort: Con toh (lan j.)
1 2 3 40 43 65
0 0 1 2 3 40 43 58 65 3 42 4
-1
1 2 3 40 43 65
0 0 1 2 3 3 43 58 65 42 4
-1 40 43 58 65
1 2 3 40 43 65
0 0 1 2 3 3 43 42 65 4
-1 40 43 58 65
1 2 3 40 43 65
0 0 1 2 3 3 43 42 65
METODE QUICK SORT
y Qick sort ban yak digun akan utk proses sortin g,karen a:
k i di k
{ m erupakan proses sortin g yan g um um digun akan
{ m udah un tuk diim plem en tasikan
{ Prosesn ya san gat cepat
At Q i k S t
y Aturan Quick Sort:
{ S e le ct
Ù Pertam a kita pilih elem en yan g diten gah sebagai pivot, m isalkan X.
{ Pa rtitio n
{ Pa rtitio n
Ù kem udian sem ua elem en tersebut disusun den gan m en em patkan X
pada posisi j sedem ikian rupa sehin gga elem en disebelah kiri1 lebih <
X dan elem en sebelah kan an > X.
R k if
{ Re ku rs if
Ù Kem udian proses diulan g un tuk bagian kiri dan kan an elem en X
ALGORITMA QUICK SORT
a lgo ritm a quicksort
d e s krip s i d e s krip s i
x data[(L+R) div 2] I L
J R
while ( I < J ) do while ( I < = J ) do
while (data[I] < x ) do in c( I ) en dwhile while ( data[J ] > x ) do dec( J ) en dwhile If ( I < = J ) then
k (d [I] d [j]) tukar(data[I],data[j]) in c( I )
Dec( J ) en dif
en dwhile
METODE H EAP SORT
y Adalah bin ary tree den gan m en ggun akan kun ci, y g gg ,
dim an a m em pun yai aturan -aturan sebagai berikut :
Ù untuk m en gisikan heap dim ulai dari level 1 sam pai ke level
dibawahn ya bila dalam level yang sam a sem ua kun ci heap belum dibawahn ya, bila dalam level yang sam a sem ua kun ci heap belum terisi m aka tidak boleh m en gisi dibawahn ya.
Ù heap dlm kon disi terurut apabila left child < paren t dan right child >
paren t p
Ù pen am bahan kun ci diletakkan pada posisi terakhir dari level dan
disebelah kan an child yg terakhir, kem udian diurutkan den gan cara upheap
Ù Bila m enghapus heap dgn m engam bil kunci pada paren t di level 1
H EAP REPRESENTATION
y Array
y Left child(i) 2i
y Left_ child(i) = 2i
y Right_ chilrd = 2i +1
y Parent = j div 2
H EAP SORT
y Metode Upheap:
{ ban din gkan kun ci terakhir den gan paren tn ya apabila paren t < kun ci m aka lakukan pertukaran .
{ ulan gi lan gkah 1 den gan m em ban din gkan den gan paren t selan jutn yag g g b g g p j y
sam pai posisi paren t di level 1 selesai diban din gkan
M d D h
y Metode Downheap:
{ ban din gkan paren t den gan leftchild dan rightchild apabila paren t < leftchild atau rightchild m aka lakukan pertukaran .
D AFTAR P U S TAKA
y DF Alfatwa, ER Syah P, FM Ahsan , “Im plem en tasi Algoritm a Radix Sort dalam Berbagai Kasus Bilan gan Diban din gkan Algoritm a Pen gurutan yan g lain ” Ban dun g 20 0 5
Algoritm a Pen gurutan yan g lain . Ban dun g. 20 0 5.
y Thom as H . Corm en , Charles E. Leiserson , Ron ald L. Rivest,
In troduction To Algorithm s, McGraw- H ill. 1990 .
y H an dbook UI, Algoritm a-algoritm a pen gurutan in tern al a dboo U , go a a go a pe gu u a e a
http:/ / ran au.cs.ui.ac.id/ sda/ archive/ 1998 / han dout/ han dout24.h tm l Tan ggal akses : 29 Desem ber 20 0 7 pukul 0 4.0 0 GMT +7
y Wikipedia, (20 0 7). Wikipedia, the free en cyclopedia.
http:/ / en wikipedia org/ wiki/ Coun tin g Sort Tanggal akses : 29
http:/ / en .wikipedia.org/ wiki/ Coun tin g_ Sort Tanggal akses : 29 Desem ber 20 0 7 pukul 0 4.0 0 GMT +7
y Wikipedia, (20 0 7). Wikipedia, the free en cyclopedia.
http:/ / en .wikipedia.org/ wiki/ Sorting_ Algorithmp / / p g/ / g g Tan ggal akses : gg 29 Desem ber 20 0 7 pukul 0 4.0 0 GMT +7
y Wikipedia, (20 0 7). Wikipedia, the free en cyclopedia.
http:/ / en .wikipedia.org/ wiki/ Radix_ Sort Tanggal akses : 29 Desem ber 20 0 7 pukul 0 4 0 0 GMT +7