sortir modulstrukturdta11
Post on 19-Jun-2015
228 Views
Preview:
TRANSCRIPT
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
top related