quick sort

46
SORTING

Transcript of quick sort

Page 1: quick sort

SORTING

Page 2: quick sort

Pengertian Algoritma Pengurutan (sorting)(sorting)

• Dalam ilmu komputer, algoritma pengurutan adalah Dalam ilmu komputer, algoritma pengurutan adalah • algoritma yang meletakkan elemen-elemen suatu kumpulan

data dalam urutan tertentu. Atau• proses pengurutan data yg sebelumnya disusun secara acak • proses pengurutan data yg sebelumnya disusun secara acak

sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.

• Yang pada kenyataannya ‘urutan tertentu’ yang umum • Yang pada kenyataannya urutan tertentu yang umum digunakan adalah secara terurut secara numerikal ataupun secara leksikografi (urutan secara abjad sesuai kamus).Ad j i i A di ( ik) & D di • Ada 2 jenis sorting : Ascending (naik) & Descending (turun)

Page 3: quick sort

Klasifikasi AlgoritmaPengurutan (sorting)

Exchange Sortmelakukan pembandingan antar data, dan melakukan pembandingan antar data, dan melakukan pertukaran apabila urutan yang didapat belum sesuai.Contohnya : Bubble sort, Cocktail sort, Comb sort, Gnome sort, Quicksort.

Selection Sorti l t t t k dil t kk di mencari elemen yang tepat untuk diletakkan di

posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan.ditemukan.Contohnya :Selection sort, Heapsort, Smoothsort, Strand sort

Page 4: quick sort

Insertion Sortmencari tempat yang tepat untuk suatu elemen data yang telah diketahui ke dalam subkumpulan data yang telah terurut, kemudian melakukan penyisipan (insertion) data di tempat yang tepat tersebut tepat tersebut. Contohnya adalah : Insertion sor, Shell sort, Tree sort, Library sort, Patience sorting.

Merge Sortd t dib i j di bk l bk l k di data dibagi menjadi subkumpulan-subkumpulan yang kemudian subkumpulan tersebut diurutkan secara terpisah, dan kemudian digabungkan kembali dengan metode merging. algoritma ini melakukan metode pengurutan merge sort juga untuk

k bk l d b d k l imengurutkan subkumpulandata tersebut, atau dengan kata lain, pengurutan dilakukan secara rekursif. Contohnya adalah : Merge sort.

Page 5: quick sort

Non-Comparison Sortproses pengurutan data yang dilakukan proses pengurutan data yang dilakukan algoritma ini tidak terdapat pembandingan antardata, data diurutkan sesuai dengan pigeon hole principle.Contohnya adalah : Radix sort, Bucket sort, Counting sort, Pigeonhole sort Tally sortPigeonhole sort, Tally sort.

Page 6: quick sort

METODE SORTING

1. RADIX SORT

Page 7: quick sort

Ide Dasar

Ide dasar dari metode Radix sort ini adalah mengkategorikan data-data menjadi sub kumpulan subkumpulan data sesuai dengan nilai radix-nya,

k k t i k di mengkonkatenasinya, kemudian mengkategorikannya kembali berdasar nilai radix lainnyalainnya.

Page 8: quick sort

Implementasi Radix Sort

• Contoh implementasi yang akan dilakukan adalah p y gimplementasi pada bilangan bulat positif menggunakan salah satu algoritma pengurutan

di tradix sort.• Contohnya adalah pengurutan sebuah kumpulan

data bilangan bulat dengan jumlah digit maksimal 3 data bilangan bulat dengan jumlah digit maksimal 3

Page 9: quick sort

Pertama kali, data dibagi-bagi sesuai dengan digit terkanan terkanan :

Page 10: quick sort

Hasil pengkategorian tersebut lalu digabung Hasil pengkategorian tersebut lalu digabung kembali dengan metode konkatenasi menjadi :

Kemudian pengkategorian dilakukan Kemudian pengkategorian dilakukan kembali,namun kali ini berdasar digit kedua atau digit tengah, dan jangan lupa bahwa urutan pada tiap subkumpulan data harus sesuai dengan urutan kemunculan pada kumpulan data

Page 11: quick sort

Yang kemudian dikonkatenasi kembali menjadi

Page 12: quick sort

Kemudian langkah ketiga, atau langkah terakhir g g , gpada contoh ini adalah pengkategorian kembali berdasar digit yang terkiri, atau yang paling i ifiksignifikan

Page 13: quick sort

Yang kemudian dikonkatenasi lagi menjadiYang kemudian dikonkatenasi lagi menjadi

Yang merupakan hasil akhir dari metode Yang merupakan hasil akhir dari metode pengurutan ini. Di mana data telah terurut dengan metode radix sort.

Page 14: quick sort

Algoritma dan Kompleksitas Waktu Radix SortRadix Sort

Implementasi dari algoritma tersebut dibuat p gmenggunakan bahasa Pascal, yang direalisasikan dengan menggunakan queue sebagai representasi ti k t i di t k k t i tiap kategori radix untuk pengkategorian. Array A adalah array input, dan array B adalah array A yang sudah terurutarray A yang sudah terurut.

Page 15: quick sort

Procedure RadixSort (A : TArray; var B : TArray; d : byte);var

KatRadix : array [0..9] of Queue;i t i ti, x, ctr : integer;pembagi : longword;

begin{--- mengkopi A ke B ---}for i:=1 to n doB[i] := A[i];

pembagi := 1;for x:=1 to d do begin

{ i i i li i K R di }{--- inisialisasi KatRadix ---}for i:=0 to 9 do

InitQueue (KatRadix[i]);{--- dikategorikan ---}for i:=1 to n dofor i: 1 to n do

Enqueue (KatRadix [(B[i] div pembagi) mod 10], B[i]);B[i] := 0;{--- dikonkat ---}ctr := 0;for i:=0 to 9 do beginwhile (NOT IsQueueEmpty (KatRadix[i])) do begin ctr := ctr + 1;B[ctr]:=DeQueue (KatRadix [i]);end;end;end;pembagi := pembagi * 10;

end;end;

Page 16: quick sort

METODE SORTING

2. BUBLE SORT

Page 17: quick sort

Ide Bubble Sort

o Algoritma dimulai dari elemen paling awal.o 2 buah elemen pertama dari list dibandingkan.o Jika elemen pertama lebih besar dari elemen

kedua dilakukan pertukarankedua,dilakukan pertukaran.o Langkah 2 dan 3 dilakukan lagi terhadap elemen

kedua dan ketiga, seterusnya sampai ke ujung g , y p j gelemen

o Bila sudah sampai ke ujung dilakukan lagi ke awal i tid k d t j di l i t k lsampai tidak ada terjadi lagi pertukaran elemen.

o Bila tidak ada pertukaran elemen lagi, maka list elemen sudah terurut.elemen sudah terurut.

Page 18: quick sort

Algoritma Bubble Sort

Setiap pasangan data: x[j] dengan x[j-1], untuk semua i=1,...,n-1 harus memenuhi keterurutan, yaitu x[j] > x[j-1].

b l d k h k k d dApabila tidak memenuhi maka posisi kedua data harus ditukar. U t k k i l k Untuk pemrograman konvensional maka pemeriksaan-pemeriksaan pasangan tersebut harus dilakukan satu demi satu, misalnya oleh harus dilakukan satu demi satu, misalnya oleh bubble-sort dilakukan dari kanan ke kiri serta di dalam sejumlah iterasi.

Page 19: quick sort

Pada iterasi ke-i, pemeriksaan tsb. dilakukan pula dalam loop-for bb sbb.

deskripsiadatukar true I 1I 1While (I<n) and (adatukar) do

J 1Adatukar falseWhile j <= (n-I) do While j < (n I) do If x[j] > x[j+1] then

Adatukar truetemp x[j]X[j] x[j+1][j] [j ]x[j+1] temp

endifj j+1endwhilei i+1endwhile

Page 20: quick sort

Loop-for tersebut akan menggeser bilangan p b gg b gterkecil ke posisi i. Loop-for dilakukan hanya sampai ke i karena pada iterasi ke-i data dalam x[0], x[1], ..., x[I 1] merupakan yang paling kecil dan sudah terurut h il dil k k ti l hasil pengeseran yang dilakukan setiap loop sebelumnya.Oleh sebab itu iterasi hanya dilakukan untuk harga Oleh sebab itu iterasi hanya dilakukan untuk harga i=0, 1, ..., n-2 atau sampai tidak terjadi penukaran dalam suatu iterasi.

Page 21: quick sort

Implementasi Bubble Sort

Pada gambar di bawah, pegecekan dimulai dari data yang Pada gambar di bawah, pegecekan dimulai dari data yang paling akhir, kemudian di bandingkan dengan data di depannya, jika data di depannya lebih besar maka akan ditukarditukar.

Page 22: quick sort

Tidak ada penukaran kkarena 3<8

Pengurutan Berhenti Di SiniPengurutan Berhenti Di Sini

•Pada proses kedua, pengecekan dilakukan i d d t k k d t t sampai dengan data ke-2 karena data pertama

pasti sudah paling kecil.

Page 23: quick sort

Pengurutan Berhenti Di Sini

Tidak ada penukaran pkarena 10<15

Pengurutan berhenti di sini

Page 24: quick sort

Pengurutan berhenti di sini

Keuntungan lain dari algoritma ini adalah dapat dijalankan dengan k d f k k l d h

g g p j gcukup cepat dan efisien untuk mengurutkan list yang urutannya sudah hampir benar. Selain kasus terbaik tersebut, komleksitas untuk algoritma ini adalah O(n²). Karenanya algoritma ini termasuk sangat tidak efisien untuk dilakukan, apalagi jika pengurutan dilakukan terhadap elemen yang banyak jumlahnya. Biasanya bubble sort digunakan untuk mengenalkan konsep dari sorting Biasanya bubble sort digunakan untuk mengenalkan konsep dari sorting algoritma pada pendidikan komputer karena idenya yang cukup sederhana.

Page 25: quick sort

METODE SORTING

3. SELECTION SORT

Page 26: quick sort

PENDAHULUAN

Metode selection sort merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah perbandingan . Selection sort merupakan metode pengurutan yang mencari nilai data terbesar atau terkecil dan kemudian mencari nilai data terbesar atau terkecil dan kemudian menempatkannya pada posisi yang sebenarnya, dimulai dari data diposisi 0 hingga data diposisi N-1. Sedangkan metode insertion sort adalah metode pengurutan yang biasa dipakai oleh pemain kartu dalam mengurutkan kartunya yaitu menyisipkan kartu dengan mengurutkan kartunya, yaitu menyisipkan kartu dengan nilai yang lebih kecil ke posisi sebelum kartu pembandingnya.

Page 27: quick sort

Selection Sort merupakan kombinasi antara sorting dansearching searching. Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesarakan dipertukarkan ke posisi yang tepat di dalam array akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengannilai terkecil dan data ini akan ditempatkan di indeksterkecil (data[0]) pada putaran kedua akan dicari data terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua(data[1]). Selama proses pembandingan dan pengubahan hanyaSelama proses, pembandingan dan pengubahan hanyadilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.

Page 28: quick sort

Tehnik pengurutan dgn cara pemilihan elemen atau proseskerja dgn memilih elemen data terkecil utk kemudiandib di k di k k d l d d l d

e ja dg e e e e data te ec ut e ud adibandingkan & ditukarkan dgn elemen pd data awal, dsts/d seluruh elemen shg akan menghasilkan pola data ygtelah disort.Kelebihan dan kekurangan Selection Sort:g

Kompleksitas selection sort relatif lebih kecil.Mudah menggabungkannya kembali, tetapi sulit membagi masalah.Membutuhkan method tambahan.

Kondisi awal:Unsorted list = dataSorted list kosongSorted list = kosong

Ambil yang terbaik (select) dari unsorted list, tambahkandi belakang sorted list.L k k t i t d li t h biLakukan terus sampai unsorted list habis.

Page 29: quick sort

Selection sort contoh

40 2 1 43 3 65 0 -1 58 3 42 4

Selection sort contoh

40 2 1 43 3 4 0 1 58 3 6542

40 2 1 43 3 65 0 1 58 3 42 4

40 2 1 43 3 4 0 1 42 65583

40 2 1 43 3 4 0 -1 58 3 6542

40 2 1 43 3 4 0 -1 42 65583

4240 2 1 3 3 4 0 -1 655843

Page 30: quick sort

Selection sort: Contoh (lanj.)

4240 2 1 3 3 4 0 6558431 4240 2 1 3 3 4 0 655843-1

42-1 2 1 3 3 4 0 65584340

42-1 2 1 3 3 4 655843400

42-1 2 1 0 3 4 655843403

Page 31: quick sort

Selection sort: Contoh (lanj.)

42-1 2 1 3 4 6558434030

1

42-1 2 1 3 4 6558434030

42-1 0 3 4 6558434032

1 42-1 0 3 4 6558434032

1 420 3 4 6558434032-1

1 420 3 4 6558434032-1

Page 32: quick sort

METODE SORTING

4. INSERTION SORT

Page 33: quick sort

Insertion SortInsertion Sort

Prinsip dasar Insertion adalah secara berulang-l i i k / k ti l k ulang menyisipkan / memasukan setiap elemen. ke

dlm posisinya / tempatnya yg benar.Mirip dengan cara orang mengurutkan kartu, Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data ke 2 sampai dengan Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi

h P d i i l k yang seharusnya. Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang

Page 34: quick sort

Insertion Sort

Kondisi awal:Unsorted list = dataSorted list = kosong

Ambil sembarang elemen dari unsorted list, sisipkan (insert) pada posisi yang benar dalam sorted list.L k k t i t d li t h biLakukan terus sampai unsorted list habis.Bayangkan anda mengurutkan kartu.

Page 35: quick sort

Insertion sort: Contoh

40 2 1 43 3 65 0 -1 58 3 42 440

2 40 1 43 3 65 0 -1 58 3 42 4

1 2 40 43 3 65 0 -1 58 3 42 4

Page 36: quick sort

Insertion sort: Contoh (lanj.)

1 2 40 43 3 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 -1 58 3 42 4

Page 37: quick sort

Insertion sort: Contoh (lanj.)

1 2 3 40 43 65 0 -1 58 3 42 4

1 2 3 40 43 650 -1 58 3 42 4

1 2 3 40 43 650 58 3 42 41 2 3 40 43 650-1

Page 38: quick sort

Insertion sort: Contoh (lanj.)

1 2 3 40 43 650 58 3 42 41 2 3 40 43 650-1

1 2 3 40 43 650 58 42 41 2 3 3 43 650-1 5840 43 65

1 2 3 40 43 650 42 41 2 3 3 43 650-1 5840 43 65

1 2 3 40 43 650 421 2 3 3 43 650-1 584 43 6542 5840 43 65

Page 39: quick sort

METODE SORTING

5. QUICK SORT

Page 40: quick sort

METODE QUICK SORT

Qick sort banyak digunakan utk proses sorting,karena:k i di kmerupakan proses sorting yang umum digunakan

mudah untuk diimplementasikanProsesnya sangat cepat

At Q i k S tAturan Quick Sort:Select

Pertama kita pilih elemen yang ditengah sebagai pivot, misalkan X. PartitionPartition

kemudian semua elemen tersebut disusun dengan menempatkan X pada posisi j sedemikian rupa sehingga elemen disebelah kiri1 lebih < X dan elemen sebelah kanan > X.

R k ifRekursifKemudian proses diulang untuk bagian kiri dan kanan elemen X dengan cara yg sama dengan langkah 1 sampai kondisi terurut

Page 41: quick sort

ALGORITMA QUICK SORT

algoritma quicksortdeskripsideskripsix data[(L+R) div 2]I LJ Rwhile ( I < J ) dowhile ( I < = J ) do

while (data[I] < x ) do inc( I ) endwhilewhile ( data[J] > x ) do dec( J ) endwhileIf ( I < = J ) then

k (d [I] d [j])tukar(data[I],data[j])inc( I )Dec( J )

endifendwhileIf ( L < J ) then quicksort(larikpixel, L, J )If ( I < R ) then quicksort(larikpixel, I, R )

Page 42: quick sort

METODE SORTING

6. HEAP SORT

Page 43: quick sort

METODE HEAP SORT

Adalah binary tree dengan menggunakan kunci, y g gg ,dimana mempunyai aturan-aturan sebagai berikut :

untuk mengisikan heap dimulai dari level 1 sampai ke level dibawahnya bila dalam level yang sama semua kunci heap belumdibawahnya, bila dalam level yang sama semua kunci heap belumterisi maka tidak boleh mengisi dibawahnya.heap dlm kondisi terurut apabila left child < parent dan right child > parentppenambahan kunci diletakkan pada posisi terakhir dari level dandisebelah kanan child yg terakhir, kemudian diurutkan dengan caraupheapBila menghapus heap dgn mengambil kunci pada parent di level 1 kemudian digantikan posisi kunci terakhir, selanjutnya disort kembalimetode downheap

Page 44: quick sort

HEAP REPRESENTATION

Array

Left child(i) 2iLeft_child(i) = 2iRight_chilrd = 2i +1 Parent = j div 2Parent = j div 2

Page 45: quick sort

HEAP SORT

Metode Upheap:bandingkan kunci terakhir dengan parentnya apabila parent < kuncimaka lakukan pertukaran.ulangi langkah 1 dengan membandingkan dengan parent selanjutnyag g g b g g p j ysampai posisi parent di level 1 selesai dibandingkan

M d D hMetode Downheap:bandingkan parent dengan leftchild dan rightchild apabila parent < leftchild atau rightchild maka lakukan pertukaran.ulangi langkah 1 dengan membandingkan dengan leftchild danrightchild pada posisi level dibawahnya sampai posisi di level terakhir selesai dibandingkan.

Page 46: quick sort

DAFTAR PUSTAKADF Alfatwa, ER Syah P, FM Ahsan, “Implementasi Algoritma Radix Sort dalam Berbagai Kasus Bilangan Dibandingkan Algoritma Pengurutan yang lain” Bandung 2005Algoritma Pengurutan yang lain . Bandung. 2005.Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Introduction To Algorithms, McGraw- Hill. 1990.Handbook UI, Algoritma-algoritma pengurutan internal a dboo U , go a a go a pe gu u a e ahttp://ranau.cs.ui.ac.id/sda/archive/1998/handout/handout24.html Tanggal akses : 29 Desember 2007 pukul 04.00 GMT +7Wikipedia, (2007). Wikipedia, the free encyclopedia. http://en wikipedia org/wiki/Counting Sort Tanggal akses : 29 http://en.wikipedia.org/wiki/Counting_Sort Tanggal akses : 29 Desember 2007 pukul 04.00 GMT +7Wikipedia, (2007). Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Sorting_Algorithm Tanggal akses : p // p g/ / g g gg29 Desember 2007 pukul 04.00 GMT +7Wikipedia, (2007). Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Radix_Sort Tanggal akses : 29 Desember 2007 pukul 04 00 GMT +7Desember 2007 pukul 04.00 GMT +7