sortir modulstrukturdta11

Preview:

Citation preview

SORTINGSORTING

MatakuliahMatakuliah :Struktur data :Struktur data

TahunTahun : 2010 : 2010

VersiVersi : 1/0 : 1/0

Dosen : Andi ArfianDosen : Andi Arfian

Sekilas tentang sortirSekilas tentang sortir

Sortir dipandang secara umum Sortir dipandang secara umum dapat dilihat dari beberapa operasi dapat dilihat dari beberapa operasi dan kegunaanya, antara lain :dan kegunaanya, antara lain :

Sortir terhadap RecordSortir terhadap Record Sortir terhadap ArraySortir terhadap Array

File dan RecordFile dan Record

File adalah Himpunan Record ,File adalah Himpunan Record ,Contoh:Contoh: File pegawai File pegawai data dari masing masing pegawai disebut Record ,jadi data dari masing masing pegawai disebut Record ,jadi

setiap pegawai mempunyai satu record.setiap pegawai mempunyai satu record.Contoh:Contoh: Nomor pegawaiNomor pegawai Nama pegawaiNama pegawai Jenis kelaminJenis kelamin JabatanJabatan Gaji pokokGaji pokok

Record adalah himpunan elemen yang Record adalah himpunan elemen yang bersifat heterogen(elemen dari record bersifat heterogen(elemen dari record boleh mempunyai tipe data yang boleh mempunyai tipe data yang berlainan)berlainan)

Elemen dari record kita sebut FieldElemen dari record kita sebut Field Tiap record dapat mempunyai banyak field Tiap record dapat mempunyai banyak field Suatu record biasanya mengandung field Suatu record biasanya mengandung field

penunjuk disebut Keypenunjuk disebut Key

contoh. Nomor pegawai 013847224contoh. Nomor pegawai 013847224

File hubungan dengan Sortir?File hubungan dengan Sortir? Key adalah field utama ,key inilah yang Key adalah field utama ,key inilah yang

biasanya ingin kita urutkan,biasanya ingin kita urutkan,11 boleh diurutkan dari key kecil ke key besar boleh diurutkan dari key kecil ke key besar

(menaik/Ascending).(menaik/Ascending).

22 Dari besar kekecil (menurun/Descending)Dari besar kekecil (menurun/Descending)

Cara tersebut diatas kita sebut Sortir,Cara tersebut diatas kita sebut Sortir,

jadi sortir terhadap file adalah proses pengurutan sekumpulan jadi sortir terhadap file adalah proses pengurutan sekumpulan recordrecord

Key(I)<=key(J) , (Dalam urut ascending)Key(I)<=key(J) , (Dalam urut ascending) Key(I)>=Key(J) , (Descending)Key(I)>=Key(J) , (Descending)

Kategori sortir berdasarkan mediaKategori sortir berdasarkan media

Sortir InternalSortir Internal = metode ini dipakai = metode ini dipakai jika himpunan data yang akan jika himpunan data yang akan disortir itu adalah kecil,sehingga disortir itu adalah kecil,sehingga tidak memerlukan tempat besar tidak memerlukan tempat besar dimemori utama komputer.dimemori utama komputer.

Sortir EksternalSortir Eksternal ,metode ini baik ,metode ini baik untuk dipakai jika himpunan data untuk dipakai jika himpunan data yang akan disortir cukup besar yang akan disortir cukup besar ( magnetik tape ,dll)( magnetik tape ,dll)

Metode Pengurutan DataMetode Pengurutan Data

Pengurutan berdasarkan perbandingan (Pengurutan berdasarkan perbandingan (comparison-based sortingcomparison-based sorting)) Bubble sort, exchange sortBubble sort, exchange sort

Pengurutan berdasarkan prioritas (Pengurutan berdasarkan prioritas (priority queue sorting methodpriority queue sorting method)) Selection sort, heap sort (menggunakan tree)Selection sort, heap sort (menggunakan tree)

Pengurutan berdasarkan penyisipan dan penjagaan Pengurutan berdasarkan penyisipan dan penjagaan terurut (terurut (insert and keep sorted methodinsert and keep sorted method))

Insertion sort, tree sortInsertion sort, tree sort Pengurutan berdasarkan pembagian dan penguasaan Pengurutan berdasarkan pembagian dan penguasaan

((devide and conquer methoddevide and conquer method)) Quick sort, merge sortQuick sort, merge sort

Pengurutan berkurang menurun (Pengurutan berkurang menurun (diminishing increment sort diminishing increment sort methodmethod))

Shell sort (pengembangan insertion)Shell sort (pengembangan insertion)

Learning OutcomesLearning Outcomes

Pada akhir pertemuan ini, diharapkan Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu:mahasiswa akan mampu:

Menjelaskan definisi sortingMenjelaskan definisi sorting Mensimulasikan algoritma sortingMensimulasikan algoritma sorting Menggunakan sorting dalam Menggunakan sorting dalam

pembuatan programpembuatan program

Outline MateriOutline Materi

Definisi SortingDefinisi Sorting Bubble SortBubble Sort Selection SortSelection Sort Insertion SortInsertion Sort Merge SortMerge Sort

Definisi SortingDefinisi Sorting

Pengurutan bilangan, huruf, kata, atau Pengurutan bilangan, huruf, kata, atau nilai lainnya sesuai dengan aturan tertentunilai lainnya sesuai dengan aturan tertentu

Mengilustrasikan pemecahan masalahMengilustrasikan pemecahan masalah Teknik penggunaan seleksi, perulangan, Teknik penggunaan seleksi, perulangan,

method, dan arraymethod, dan array Demonstrasi performa/kompleksitas Demonstrasi performa/kompleksitas

algoritmaalgoritma Mempercepat proses Mempercepat proses searchingsearching

Algoritma SortingAlgoritma Sorting

Algoritma sorting dasar:Algoritma sorting dasar: Bubble SortBubble Sort Insertion SortInsertion Sort Selection SortSelection Sort

Algoritma sorting lanjutan:Algoritma sorting lanjutan: Merge SortMerge Sort Quick SortQuick Sort Bucket SortBucket Sort Shell SortShell Sort Radix SortRadix Sort External SortExternal Sort

Bubble SortBubble Sort

Metode sorting termudahMetode sorting termudah Diberi nama “Bubble” karena proses pengurutan Diberi nama “Bubble” karena proses pengurutan

secara berangsur-angsur bergerak/berpindah ke secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.keluar dari sebuah gelas bersoda.

Bubble Sort mengurutkan data dengan cara Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan membandingkan elemen sekarang dengan elemen berikutnya.elemen berikutnya.

Bubble SortBubble Sort Disebut juga Disebut juga sinking sort sinking sort atauatau exchange sort exchange sort Ascending Ascending pengurutan dari kecil ke besar pengurutan dari kecil ke besar

DescendingDescending pengurutan dari besar ke kecil pengurutan dari besar ke kecil Nilai dikirimkan dalam arrayNilai dikirimkan dalam array Nilai bersebelahan dibandingkanNilai bersebelahan dibandingkan Jika increasing, maka ditukar menjadi decreasingJika increasing, maka ditukar menjadi decreasing Pada putaran ke:Pada putaran ke:

1, array ke 1 (index 0) berupa nilai terkecil1, array ke 1 (index 0) berupa nilai terkecil 2, array ke 2 (index 1) berupa nilai terkecil kedua2, array ke 2 (index 1) berupa nilai terkecil kedua n-1, array ke n (index n-1) berupa nilai terbesarn-1, array ke n (index n-1) berupa nilai terbesar

Jumlah putaran = n-1Jumlah putaran = n-1

Bubble SortBubble Sort

Bubble sort secara ascendingBubble sort secara ascending

Bubble SortBubble Sort

Bubble SortBubble Sort Pengurutan secara ascendingPengurutan secara ascending

Pengurutan secara descendingPengurutan secara descending

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Bubble SortBubble Sort

Exchange SortExchange Sort Sangat mirip dengan Bubble SortSangat mirip dengan Bubble Sort Banyak yang mengatakan Bubble Sort sama dengan Banyak yang mengatakan Bubble Sort sama dengan

Exchange SortExchange Sort Pebedaan : dalam hal bagaimana membandingkan antar Pebedaan : dalam hal bagaimana membandingkan antar

elemen-elemennya.elemen-elemennya. Exchange sort membandingkan Exchange sort membandingkan suatusuatu elemen elemen dengan dengan

elemen-elemen lainnyaelemen-elemen lainnya dalam array tersebut, dan dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen yang selalu menjadi elemen pusat (pivot).pusat (pivot).

Sedangkan Bubble sort akan membandingkan Sedangkan Bubble sort akan membandingkan elemen elemen pertama/terakhirpertama/terakhir dengan dengan elemen elemen sebelumnya/sesudahnyasebelumnya/sesudahnya, kemudian elemen tersebut itu , kemudian elemen tersebut itu akan menjadi akan menjadi pusat (pivot)pusat (pivot) untuk dibandingkan dengan untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.elemen sebelumnya/sesudahnya lagi, begitu seterusnya.

Exchange Sort (2)Exchange Sort (2)

Exchange Sort (3)Exchange Sort (3)

Exchange Sort (4)Exchange Sort (4)

Exchange Sort (5)Exchange Sort (5)

Prosedur Exchange SortProsedur Exchange Sort

Selection SortSelection Sort

Selection sortSelection sort Merupakan kombinasi antara sorting dan searchingMerupakan kombinasi antara sorting dan searching Untuk setiap proses, akan dicari elemen-elemen yang Untuk setiap proses, akan dicari elemen-elemen yang

belum diurutkan yang memiliki nilai terkecil atau terbesar belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array.akan dipertukarkan ke posisi yang tepat di dalam array.

Misalnya untuk putaran pertama, akan dicari data Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]).kedua (data[1]).

Selama proses, pembandingan dan pengubahan Selama proses, pembandingan dan pengubahan hanya hanya dilakukandilakukan pada pada indeksindeks pembanding saja, pertukaran pembanding saja, pertukaran data secara fisik terjadi pada data secara fisik terjadi pada akhirakhir proses. proses.

Selection Sort (3)Selection Sort (3) Prosedur Selection Sort Prosedur Selection Sort

Selection Sort (2)Selection Sort (2)

Algoritma selection sorting Algoritma selection sorting

1.1. Pilih data dengan key terkecilPilih data dengan key terkecil

2.2. Tukarkan data tersebut dengan elemen a[1].Tukarkan data tersebut dengan elemen a[1].

3.3. Kemudian ulangi hal tersebut dengan n-1 data Kemudian ulangi hal tersebut dengan n-1 data yang ada kecuali a[1],dan a[2] dst,,,,yang ada kecuali a[1],dan a[2] dst,,,,

Selection SortSelection Sort Nilai dikirimkan dalam arrayNilai dikirimkan dalam array Nilai yang dicari terbesar, diletakkan di akhirNilai yang dicari terbesar, diletakkan di akhir Pada putaran ke:Pada putaran ke:

1, array ke 1 (index 0) berupa nilai terkecil1, array ke 1 (index 0) berupa nilai terkecil 2, array ke 2 (index 1) berupa nilai terkecil kedua2, array ke 2 (index 1) berupa nilai terkecil kedua n-1, array ke n (index n-1) berupa nilai terbesarn-1, array ke n (index n-1) berupa nilai terbesar

Jumlah putaran = n-1Jumlah putaran = n-1

Selection SortSelection Sort

Selection sort secara ascendingSelection sort secara ascending

Selection sort secara descendingSelection sort secara descending

Selection SortSelection Sort

Selection SortSelection Sort

Selection SortSelection Sort

Selection SortSelection Sort

Insertion SortInsertion Sort

Teknik adalah sederhana dan paling mudah dimengerti maupun diterapkan,prinsip dasarnya adalah secara berulang-ulang memasukan setiap kata/data kedalam tempat yang benar,

Insertion SortInsertion Sort Mirip dengan cara orang Mirip dengan cara orang mengurutkanmengurutkan kartu, kartu,

selembar demi selembar kartu diambil dan selembar demi selembar kartu diambil dan disisipkandisisipkan (insert) ke tempat yang seharusnya. (insert) ke tempat yang seharusnya.

Pengurutan dimulai dari data ke-2 sampai Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang dengan data terakhir, jika ditemukan data yang lebih kecillebih kecil, maka akan ditempatkan (, maka akan ditempatkan (diinsertdiinsert) ) diposisi yang seharusnya.diposisi yang seharusnya.

Pada penyisipan elemen, maka elemen-elemen Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakanglain akan bergeser ke belakang

Insertion SortInsertion Sort

Nilai dikirimkan dalam arrayNilai dikirimkan dalam array Menggunakan bantuan penampungMenggunakan bantuan penampung Nilai dibandingkan dengan index Nilai dibandingkan dengan index

sebelumnyasebelumnya Setiap putaran tidak menghasilkan nilai Setiap putaran tidak menghasilkan nilai

terbesar atau terkecilterbesar atau terkecil Jumlah putaran = n-1Jumlah putaran = n-1

Insertion SortInsertion Sort

Mirip dengan cara orang Mirip dengan cara orang mengurutkanmengurutkan kartu, kartu, selembar demi selembar kartu diambil dan selembar demi selembar kartu diambil dan disisipkandisisipkan (insert) ke tempat yang seharusnya. (insert) ke tempat yang seharusnya.

Pengurutan dimulai dari data ke-2 sampai Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang dengan data terakhir, jika ditemukan data yang lebih kecillebih kecil, maka akan ditempatkan (, maka akan ditempatkan (diinsertdiinsert) ) diposisi yang seharusnya.diposisi yang seharusnya.

Pada penyisipan elemen, maka elemen-elemen Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakanglain akan bergeser ke belakang

Insertion Sort (2)Insertion Sort (2)

Insertion SortInsertion Sort

Insertion sort secara ascendingInsertion sort secara ascending

Insertion sort secara descendingInsertion sort secara descending

Insertion SortInsertion Sort

Did You Know?Did You Know?

Jika bilangan sudah terurut, Bubble Sort Jika bilangan sudah terurut, Bubble Sort tetap melakukan pengecekantetap melakukan pengecekan

Menyebabkan eksekusi lebih lamaMenyebabkan eksekusi lebih lama Solusi Solusi Bubble Flag Bubble Flag

Advanced LearningAdvanced Learning

Metode sortir gabung dengan teknik mengabungkan dua buah array kedalam sebuah aray yang baru

Ex,

Kita mempunyai 2000 record yang akan kita sortir,namun hanya 1000 record yang dapat disimpan dalam memori utama,maka masalah ini akan terselesaikan dengan mergesort

Advanced LearningAdvanced Learning

Nilai dikirimkan dalam arrayNilai dikirimkan dalam array Membagi data menjadi dua berdasarkan Membagi data menjadi dua berdasarkan

indexindex Masing-masing diurutkanMasing-masing diurutkan Menggabungkan kembali dataMenggabungkan kembali data

Advanced LearningAdvanced Learning

Advanced LearningAdvanced Learning

Advanced LearningAdvanced Learning

66

How to MergeHow to Merge

Here are two lists to be merged: Here are two lists to be merged: First: First: (12, 16, 17, 20, 21, 27) (12, 16, 17, 20, 21, 27) Second: Second: (9, 10, 11, 12, 19)(9, 10, 11, 12, 19)

CompareCompare1212 and and 99First: First: (12, 16, 17, 20, 21, 27) (12, 16, 17, 20, 21, 27) Second: Second: (10, 11, 12, 19)(10, 11, 12, 19)New: New: (9)(9)

Compare Compare 1212 and and 1010First: First: (12, 16, 17, 20, 21, 27) (12, 16, 17, 20, 21, 27) Second: Second: (11, 12, 19)(11, 12, 19)New: New: (9, 10) (9, 10)

67

Merge ExampleMerge Example

Compare Compare 1212 and and 1111First: First: (12, 16, 17, 20, 21, 27) (12, 16, 17, 20, 21, 27)

Second: Second: (12, 19)(12, 19)

New: New: (9, 10, 11) (9, 10, 11)

Compare Compare 1212 and and 1212First: First: (16, 17, 20, 21, 27) (16, 17, 20, 21, 27)

Second: Second: (12, 19)(12, 19)

New: New: (9, 10, 11, 12)(9, 10, 11, 12)

68

Merge ExampleMerge Example

Compare Compare 1616 and and 1212First: First: (16, 17, 20, 21, 27) (16, 17, 20, 21, 27)

Second: Second: (19)(19)

New: New: (9, 10, 11, 12, 12)(9, 10, 11, 12, 12)

Compare Compare 1616 and and 1919First: First: (17, 20, 21, 27) (17, 20, 21, 27)

Second: Second: (19)(19)

New: New: (9, 10, 11, 12, 12, 16) (9, 10, 11, 12, 12, 16)

69

Merge ExampleMerge Example

Compare Compare 1717 and and 1919First: First: (20, 21, 27) (20, 21, 27)

Second: Second: (19)(19)

New: New: (9, 10, 11, 12, 12, 16, 17)(9, 10, 11, 12, 12, 16, 17)

Compare Compare 2020 and and 1919First: First: (20, 21, 27) (20, 21, 27)

Second:Second: ( )( )

New: New: (9, 10, 11, 12, 12, 16, 17, 19)(9, 10, 11, 12, 12, 16, 17, 19)

70

Merge ExampleMerge Example

Checkout 20 and empty listFirst: ( ) Second: ( )New: (9, 10, 11, 12, 12, 16, 17, 19, 20,

21, 27)

71

MergeSortMergeSort

Original 24 13 26 1 12 27 38 15Divide in 2 24 13 26 1 12 27 38 15Divide in 4 24 13 26 1 12 27 38 15Divide in 8 24 13 26 1 12 27 38 15Merge 2 13 24 1 26 12 27 15 38Merge 4 1 13 24 26 12 15 27 38Merge 8 1 12 13 15 24 26 27 38

72

Merge-Sort TreeMerge-Sort Tree

An execution of merge-sort is depicted by a binary treeAn execution of merge-sort is depicted by a binary tree each node represents a recursive call of merge-sort and each node represents a recursive call of merge-sort and

storesstores• unsorted sequence before the execution and its partitionunsorted sequence before the execution and its partition

• sorted sequence at the end of the executionsorted sequence at the end of the execution the root is the initial call the root is the initial call the leaves are calls on subsequences of size 0 or 1the leaves are calls on subsequences of size 0 or 1

7 2 9 4 2 4 7 9

7 2 2 7 9 4 4 9

7 7 2 2 9 9 4 4

73

Execution ExampleExecution Example

PartitionPartition

7 2 9 4 3 8 6 1

74

Execution Example (cont.)Execution Example (cont.)

Recursive call, partitionRecursive call, partition

7 2 9 4

7 2 9 4 3 8 6 1

75

Execution Example (cont.)Execution Example (cont.)

Recursive call, partitionRecursive call, partition

7 2 9 4

7 2

7 2 9 4 3 8 6 1

76

Execution Example (cont.)Execution Example (cont.)

Recursive call, base caseRecursive call, base case

7 2 9 4

7 2

7 7

7 2 9 4 3 8 6 1

77

Execution Example (cont.)Execution Example (cont.)

Recursive call, base caseRecursive call, base case

7 2 9 4

7 2

7 7 2 2

7 2 9 4 3 8 6 1

78

Execution Example (cont.)Execution Example (cont.)

MergeMerge

7 2 9 4

7 2 2 7

7 7 2 2

7 2 9 4 3 8 6 1

79

Execution Example (cont.)Execution Example (cont.)

Recursive call, …, base case, mergeRecursive call, …, base case, merge

7 2 9 4

7 2 2 7 9 4 4 9

7 7 2 2

7 2 9 4 3 8 6 1

9 9 4 4

80

Execution Example (cont.)Execution Example (cont.)

MergeMerge

7 2 9 4 2 4 7 9

7 2 2 7 9 4 4 9

7 7 2 2 9 9 4 4

7 2 9 4 3 8 6 1

81

Execution Example (cont.)Execution Example (cont.)

Recursive call, …, merge, mergeRecursive call, …, merge, merge

7 2 9 4 2 4 7 9 3 8 6 1 1 3 6 8

7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6

7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1

7 2 9 4 3 8 6 1

82

Execution Example (cont.)Execution Example (cont.)

MergeMerge

7 2 9 4 2 4 7 9 3 8 6 1 1 3 6 8

7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6

7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1

7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9

83

Complexity of MergeSortComplexity of MergeSort

PassPass

NumberNumber

Number of Number of mergesmerges

Merge list Merge list lengthlength

# of comps / # of comps / moves per moves per

mergemerge

11 22k-1 k-1 or n/2or n/2 1 or n/21 or n/2kk 2211

22 22k-2 k-2 or n/4or n/4 2 or n/22 or n/2k-1k-1 2222

33 22k-3 k-3 or n/8or n/8 4 or n/24 or n/2k-2k-2 2233

.. .. .. ..

.. .. .. ..

.. .. .. ..

k – 1k – 1 221 1 or n/2or n/2k-1k-1 22k-2 k-2 or n/4or n/4 22k-1k-1

kk 220 0 or n/2or n/2kk 22k-1 k-1 or n/2or n/2 22kk

k = log n

84

Multiplying Multiplying the number ofthe number of mergesmerges by the by the maximum number ofmaximum number of comparisonscomparisons per per merge, we get:merge, we get:

(2(2k-1k-1)2)211 = 2= 2kk

(2(2k-2k-2)2)222 = 2= 2kk

(2(211)2)2k-1k-1 = 2= 2kk

(2(200)2)2kk = 2= 2kk

Complexity of MergeSortComplexity of MergeSort

k passes each require 2k comparisons (and moves). But k = lg n and hence, we get lg(n) n comparisons or O(n lgn)

Heap SortHeap SortHeap sort adalah sort yang memanfaatkan prinsip pohonheap,

pohon heap adalah pohon biner lengkap dimana nilai yang terkandung dalam simpul bapak atau

Father (F) lebih besar atau lebih kecil dari nilai kedua buah simpul anaknya atau simpul SON (S) ,sedangkan nilai simpul cabang kiri

bisa lebih besar ,lebih kecil atau sama dengan simpul anak cabang kanan

HeapHeap

Heap sort pseudocodeHeap sort pseudocode

functionfunction heapSort(a, count) { heapSort(a, count) {varvar intint start := count ÷ 2 - 1, end := count - 1 start := count ÷ 2 - 1, end := count - 1 whilewhile start ≥ 0 start ≥ 0

sift(a, start, count)sift(a, start, count)start := start – 1start := start – 1

whilewhile end > 0 end > 0 swap(a[end], a[0])swap(a[end], a[0])sift(a, 0, end)sift(a, 0, end)end := end - 1 end := end - 1

}}

functionfunction sift(a, start, count) { sift(a, start, count) {varvar intint root := start, child root := start, child

whilewhile root * 2 + 1 < count { root * 2 + 1 < count {child := root * 2 + 1 child := root * 2 + 1

ifif child < count - 1 child < count - 1 andand a[child] < a[child + 1] a[child] < a[child + 1]child := child + 1child := child + 1

ifif a[root] < a[child] a[root] < a[child]swap(a[root], a[child]) swap(a[root], a[child]) root := child root := child

elseelse returnreturn}}

}}

Building a HeapBuilding a Heap

Build Heap Build Heap

The above list is not a heap. Let’s see how to build it The above list is not a heap. Let’s see how to build it into a heapinto a heap

Building a HeapBuilding a Heap

Building a HeapBuilding a Heap

Building a HeapBuilding a Heap

Building a HeapBuilding a Heap

Building a HeapBuilding a Heap

Now, the list becomes a heapNow, the list becomes a heap

FibonacciFibonacci

Write a recursive assembly program that Write a recursive assembly program that calculates the Fibonacci numbers for a calculates the Fibonacci numbers for a given integer ngiven integer n

Quicksort disebut juga partition exshangesort,karena konsepnya membuat partisi-partisi dan sort dilakukan perpartisi

ProsesMengambil satu buah nilai pada posisi tertentu(Pivot) dan meletakkannya pada posisinya yang terakhir,Pivot dapat diambil nilai paling kiri atau nilai yang berada di tengah

Quick-SortQuick-Sort To understand quick-sort, let’s look at a high-level description of To understand quick-sort, let’s look at a high-level description of

the algorithmthe algorithm

11) Divide) Divide : If the sequence S has 2 or more elements, select an : If the sequence S has 2 or more elements, select an element x from S to be your element x from S to be your pivotpivot. Any arbitrary element, like . Any arbitrary element, like the last, will do. Remove all the elements of S and divide them the last, will do. Remove all the elements of S and divide them into 3 sequences:into 3 sequences:L, holds S’s elements less than xL, holds S’s elements less than x

E, holds S’s elements equal to xE, holds S’s elements equal to x

G, holds S’s elements greater than xG, holds S’s elements greater than x

2) 2) RecurseRecurse: Recursively sort L and G: Recursively sort L and G

3) 3) ConquerConquer: Finally, to put elements back into S in order, first : Finally, to put elements back into S in order, first inserts the elements of L, then those of E, and those of G.inserts the elements of L, then those of E, and those of G.

Here are some pretty diagrams....Here are some pretty diagrams....

Revised Partitioning AlgorithmRevised Partitioning Algorithm

Quicksort is O(nQuicksort is O(n22) when each split gives 1 ) when each split gives 1 empty arrayempty array

This happens when the array is already This happens when the array is already sortedsorted

Solution approach: pick better pivot valuesSolution approach: pick better pivot values Use three “marker” elements: first, middle, Use three “marker” elements: first, middle,

lastlast Let pivot be one whose value is between the Let pivot be one whose value is between the

othersothers

Quicksort ExampleQuicksort Example

Idea of Quick SortIdea of Quick Sort

1) 1) SelectSelect: pick an element: pick an element

22) Divide) Divide: rearrange elements : rearrange elements so that so that x x goes to itsgoes to its final final position Eposition E

3) 3) Recurse and ConquerRecurse and Conquer: : recursively sortrecursively sort

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Quick-Sort TreeQuick-Sort Tree

Skipping ...

... Finally... Finally

In-Place Quick-SortIn-Place Quick-SortDivide step: l scans the sequence from the left, and r from the right.

A swap is performed when l is at an element larger than the pivot and r is at one smaller than the pivot.

In Place Quick Sort (contd.)In Place Quick Sort (contd.)

A final swap with the pivot completes the divide step

In Place Quick Sort codeIn Place Quick Sort codepublic class ArrayQuickSort implements SortObject {

public void sort(Sequence S, Comparator c){quicksort(S, C, 0, S.size()-1);

}private void quicksort (Sequence S, Comparator c,int leftBound, int rightBound) {// left and rightmost ranks of sorting range

if (S.size() < 2) return; //a sequence with 0 or 1 elements // is already sorted

if (leftBound >= rightBound) return; //terminate recursion// pick the pivot as the current last element in range Object pivot = S.atRank(rightBound).element();// indices used to scan the sorting range int leftIndex = leftBound; // will scan rightward

int rightIndex = rightBound - 1; //will scan leftward

In Place Quick Sort code In Place Quick Sort code (contd.)(contd.)// outer loop

while (leftIndex <= rightIndex) {//scan rightward until an element larger than//the pivot is found or the indices crosswhile ((leftIndex <= rightIndex) &&(c.isLessThanOrEqualTo

(S.atRank(leftIndex).element(),pivot))leftIndex++;

//scan leftward until an element smaller than//the pivot is found or the indices crosswhile (rightIndex >= leftIndex) &&(c.isGreaterThanOrEqualTo

(S.atRank(rightIndex).element(),pivot))rightIndex--;

//if an element larger than the pivot and an//element smaller than the pivot have been//found, swap themif (leftIndex < rightIndex)

S.swap(S.atRank(leftIndex),S.atRank(rightIndex));} // the outer loop continues until

// the indices cross. End of outer loop.

In Place Quick Sort code In Place Quick Sort code (contd.)(contd.)

//put the pivot in its place by swapping it//with the element at leftIndexS.swap(S.atRank(leftIndex),S.atRank(rightBound));

// the pivot is now at leftIndex, so recur// on both sidesquicksort (S, c, leftBound, leftIndex-1);quickSort (S, c, leftIndex+1, rightBound);

} // end quicksort method} // end ArrayQuickSort class

Analysis of Running TimeAnalysis of Running Time Consider a quick-sort tree T:Consider a quick-sort tree T:

Let sLet sii(n) denote the sum of the input sizes of the nodes at depth i in T.(n) denote the sum of the input sizes of the nodes at depth i in T.

We know that sWe know that s00(n) = n since the root of T is associated with the (n) = n since the root of T is associated with the entire input set.entire input set.

Also, sAlso, s11(n) = n-1 since the pivot is not propagated.(n) = n-1 since the pivot is not propagated. Thus: either sThus: either s22(n) = n-3, or n - 2 (if one of the nodes has a zero (n) = n-3, or n - 2 (if one of the nodes has a zero

input size).input size). The worst case running time of a quick-sort is then:The worst case running time of a quick-sort is then:

Thus quick-sort runs in time O(n2) in the worst case

PerbandinganPerbandingan

Tabel Perbandingan Kecepatan Metode Tabel Perbandingan Kecepatan Metode Pengurutan Data Pengurutan Data

Untuk data sejumlah 10.000 data pada Untuk data sejumlah 10.000 data pada komputer Pentium II 450 MHz komputer Pentium II 450 MHz

Masih banyak lagiMasih banyak lagi

Merge SortMerge SortHeap Sort Quick Sort

SoalSoal

Carilah 3 metode sorting lainnya dan tuliskan Carilah 3 metode sorting lainnya dan tuliskan dalam paper beserta source code, cara dan dalam paper beserta source code, cara dan analisis dan tiap-tiap metode sorting yang ada!analisis dan tiap-tiap metode sorting yang ada!

Buatlah semua procedure-procedure yang ada di Buatlah semua procedure-procedure yang ada di atas dalam program utuh!atas dalam program utuh!

NEXT: NEXT: Array Stack dan Queue Array Stack dan Queue

ReferensiReferensi

Introdution to Java Programming. 7ed. Introdution to Java Programming. 7ed. Liang. 2009. p227-230, p864-866Liang. 2009. p227-230, p864-866

Bubble Sort Algorithm in Java. Bubble Sort Algorithm in Java. http://www.geekpedia.com/tutorial272_Buhttp://www.geekpedia.com/tutorial272_Bubble-Sort-Algorithm-in-Java.htmlbble-Sort-Algorithm-in-Java.html