sortir modulstrukturdta11

122
SORTING SORTING Matakuliah Matakuliah :Struktur data :Struktur data Tahun Tahun : 2010 : 2010 Versi Versi : 1/0 : 1/0 Dosen : Andi Arfian Dosen : Andi Arfian

Transcript of sortir modulstrukturdta11

Page 1: sortir modulstrukturdta11

SORTINGSORTING

MatakuliahMatakuliah :Struktur data :Struktur data

TahunTahun : 2010 : 2010

VersiVersi : 1/0 : 1/0

Dosen : Andi ArfianDosen : Andi Arfian

Page 2: sortir modulstrukturdta11

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

Page 3: sortir modulstrukturdta11

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

Page 4: sortir modulstrukturdta11

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

Page 5: sortir modulstrukturdta11

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)

Page 6: sortir modulstrukturdta11

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)

Page 7: sortir modulstrukturdta11

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)

Page 8: sortir modulstrukturdta11

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

Page 9: sortir modulstrukturdta11

Outline MateriOutline Materi

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

Page 10: sortir modulstrukturdta11

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

Page 11: sortir modulstrukturdta11

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

Page 12: sortir modulstrukturdta11

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.

Page 13: sortir modulstrukturdta11

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

Page 14: sortir modulstrukturdta11

Bubble SortBubble Sort

Bubble sort secara ascendingBubble sort secara ascending

Page 15: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 16: sortir modulstrukturdta11

Bubble SortBubble Sort Pengurutan secara ascendingPengurutan secara ascending

Pengurutan secara descendingPengurutan secara descending

Page 17: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 18: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 19: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 20: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 21: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 22: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 23: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 24: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 25: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 26: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 27: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 28: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 29: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 30: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 31: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 32: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 33: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 34: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 35: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 36: sortir modulstrukturdta11

Bubble SortBubble Sort

Page 37: sortir modulstrukturdta11

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.

Page 38: sortir modulstrukturdta11

Exchange Sort (2)Exchange Sort (2)

Page 39: sortir modulstrukturdta11

Exchange Sort (3)Exchange Sort (3)

Page 40: sortir modulstrukturdta11

Exchange Sort (4)Exchange Sort (4)

Page 41: sortir modulstrukturdta11

Exchange Sort (5)Exchange Sort (5)

Prosedur Exchange SortProsedur Exchange Sort

Page 42: sortir modulstrukturdta11

Selection SortSelection Sort

Page 43: sortir modulstrukturdta11

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.

Page 44: sortir modulstrukturdta11

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

Page 45: sortir modulstrukturdta11

Selection Sort (2)Selection Sort (2)

Page 46: sortir modulstrukturdta11

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,,,,

Page 47: sortir modulstrukturdta11

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

Page 48: sortir modulstrukturdta11

Selection SortSelection Sort

Selection sort secara ascendingSelection sort secara ascending

Selection sort secara descendingSelection sort secara descending

Page 49: sortir modulstrukturdta11

Selection SortSelection Sort

Page 50: sortir modulstrukturdta11

Selection SortSelection Sort

Page 51: sortir modulstrukturdta11

Selection SortSelection Sort

Page 52: sortir modulstrukturdta11

Selection SortSelection Sort

Page 53: sortir modulstrukturdta11

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,

Page 54: sortir modulstrukturdta11

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

Page 55: sortir modulstrukturdta11

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

Page 56: sortir modulstrukturdta11

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

Page 57: sortir modulstrukturdta11

Insertion Sort (2)Insertion Sort (2)

Page 58: sortir modulstrukturdta11

Insertion SortInsertion Sort

Insertion sort secara ascendingInsertion sort secara ascending

Insertion sort secara descendingInsertion sort secara descending

Page 59: sortir modulstrukturdta11

Insertion SortInsertion Sort

Page 60: sortir modulstrukturdta11

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

Page 61: sortir modulstrukturdta11

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

Page 62: sortir modulstrukturdta11

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

Page 63: sortir modulstrukturdta11

Advanced LearningAdvanced Learning

Page 64: sortir modulstrukturdta11

Advanced LearningAdvanced Learning

Page 65: sortir modulstrukturdta11

Advanced LearningAdvanced Learning

Page 66: sortir modulstrukturdta11

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)

Page 67: sortir modulstrukturdta11

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)

Page 68: sortir modulstrukturdta11

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)

Page 69: sortir modulstrukturdta11

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)

Page 70: sortir modulstrukturdta11

70

Merge ExampleMerge Example

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

21, 27)

Page 71: sortir modulstrukturdta11

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

Page 72: sortir modulstrukturdta11

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

Page 73: sortir modulstrukturdta11

73

Execution ExampleExecution Example

PartitionPartition

7 2 9 4 3 8 6 1

Page 74: sortir modulstrukturdta11

74

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

Recursive call, partitionRecursive call, partition

7 2 9 4

7 2 9 4 3 8 6 1

Page 75: sortir modulstrukturdta11

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

Page 76: sortir modulstrukturdta11

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

Page 77: sortir modulstrukturdta11

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

Page 78: sortir modulstrukturdta11

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

Page 79: sortir modulstrukturdta11

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

Page 80: sortir modulstrukturdta11

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

Page 81: sortir modulstrukturdta11

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

Page 82: sortir modulstrukturdta11

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

Page 83: sortir modulstrukturdta11

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

Page 84: sortir modulstrukturdta11

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)

Page 85: sortir modulstrukturdta11

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

Page 86: sortir modulstrukturdta11

HeapHeap

Page 87: sortir modulstrukturdta11

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}}

}}

Page 88: sortir modulstrukturdta11

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

Page 89: sortir modulstrukturdta11

Building a HeapBuilding a Heap

Page 90: sortir modulstrukturdta11

Building a HeapBuilding a Heap

Page 91: sortir modulstrukturdta11

Building a HeapBuilding a Heap

Page 92: sortir modulstrukturdta11

Building a HeapBuilding a Heap

Page 93: sortir modulstrukturdta11

Building a HeapBuilding a Heap

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

Page 94: sortir modulstrukturdta11

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

Page 95: sortir modulstrukturdta11

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

Page 96: sortir modulstrukturdta11

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....

Page 97: sortir modulstrukturdta11

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

Page 98: sortir modulstrukturdta11

Quicksort ExampleQuicksort Example

Page 99: sortir modulstrukturdta11

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

Page 100: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 101: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 102: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 103: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 104: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 105: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 106: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 107: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 108: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 109: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 110: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Page 111: sortir modulstrukturdta11

Quick-Sort TreeQuick-Sort Tree

Skipping ...

Page 112: sortir modulstrukturdta11

... Finally... Finally

Page 113: sortir modulstrukturdta11

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.

Page 114: sortir modulstrukturdta11

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

A final swap with the pivot completes the divide step

Page 115: sortir modulstrukturdta11

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

Page 116: sortir modulstrukturdta11

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.

Page 117: sortir modulstrukturdta11

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

Page 118: sortir modulstrukturdta11

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

Page 119: sortir modulstrukturdta11

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

Page 120: sortir modulstrukturdta11

Masih banyak lagiMasih banyak lagi

Merge SortMerge SortHeap Sort Quick Sort

Page 121: sortir modulstrukturdta11

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

Page 122: sortir modulstrukturdta11

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