KUG 1 A 3 Algoritma Pemrograman Burhanuddin D
KUG 1 A 3 Algoritma& Pemrograman Burhanuddin D Prodi S 1 -Sistem Komputer, F Teknik Elektro Universitas Telkom Presentasi Array 4 : Sorting
Pokok Bahasan • • Bubble Sort Selection Sort Insertion Sort ( Opsional ) Latihan KUG 1 A 3 Algoritma & Pemrograman 2
Bubble Sort • Menerapkan pertukaran harga pada proses penukarannya. • Mengambil ide dari gelembung : – Elemen berharga kecil "diapungkan“ / diangkat ke atas melalui pertukaran. • Proses dilakukan sebanyak N-1 tahapan / pass. – Pada setiap pass, ada bagian yang terurut dan ada yang belum KUG 1 A 3 Algoritma & Pemrograman 3
Proses Bubble Sort 1. 2. 3. 4. 5. Bandingkan elemen pertama dan kedua : Ø Jika elemen pertama lebih besar dari elemen kedua, maka tukarkan posisi kedua elemen tersebut. Lakukan juga untuk elemen kedua dan ketiga, kemudian ketiga dan keempat dst. Pada pembandingan ke N-1, nilai terbesar berada posisi ke N. Ini disebut pass I. Ulangi lagi pengulangan dari awal, mulai elemen pertama hingga elemen ke N-1. Ulangi proses sampai (N-1) kali untuk semua elemen. KUG 1 A 3 Algoritma & Pemrograman 4
ILUSTRASI Data ={ 1, 4, 3, 4, 5, 5, 4 } 1. Bandingkan elemen pertama dan kedua : Ø Jika elemen pertama lebih besar dari elemen kedua, maka tukarkan posisi kedua elemen tersebut. Data 1 > Data 2 1 > 4 ? Tdk, biarkan 2. Lakukan juga untuk elemen kedua dan ketiga, kemudian ketiga dan keempat dst. KUG 1 A 3 Algoritma & Pemrograman 5
ILUSTRASI Data ={ 1, 4, 3, 4, 5, 5, 4 } Bandingkan elemen kedua dan ketiga, ketiga dan keempat, dan seterusnya: Data 2 > Data 3 4 > 3 ? Ya, tukarkan → Data 2 = 3, Data 3 = 4 Data ={ 1, 3, 4, 4, 5, 5, 4 } Data 3 > Data 4 4 > 4 ? Tdk, biarkan Data 4 > Data 5 4 > 5 ? Tdk, biarkan KUG 1 A 3 Algoritma & Pemrograman 6
ILUSTRASI Data ={ 1, 3, 4, 4, 5, 5, 4 } Data 5 > Data 6 5 > 4 ? Ya, tukarkan → Data 5 = 4, Data 6 = 5 Data ={ 1, 3, 4, 4, 4, 5, 5, 5, 4 } Data 6 > Data 7 5 > 5 ? Tdk, biarkan Data 7 > Data 8 5 > 5 ? Tdk, biarkan Data 8 > Data 9 5 > 4 ? Ya, tukarkan → Data 8 = 4, Data 9 = 5 Data ={ 1, 3, 4, 4, 4, 5, 5, 4, 5 } KUG 1 A 3 Algoritma & Pemrograman 7
ILUSTRASI Sebelum proses penukaran Data ={ 1, 4, 3, 4, 5, 5, 4 } Setelah penukaran tahap I /pass I Data ={ 1, 3, 4, 4, 4, 5, 5, 4, 5 } 3. Pada pembandingan ke N-1, nilai terbesar berada posisi ke N. Ini disebut pass I. Ø Perhatikan bahwa nilai elemen ke-N/ terakhir adalah nilai terbesar KUG 1 A 3 Algoritma & Pemrograman 8
ILUSTRASI 4. Ulangi lagi pengulangan dari awal, mulai elemen pertama hingga elemen ke N-1. Setelah penukaran tahap I /pass I Data ={ 1, 3, 4, 4, 4, 5, 5, 4, 5 } Setelah penukaran tahap II /pass II Data ={ 1, 3, 4, 4, 4, 5, 5 } Ø Perhatikan bahwa nilai elemen ke-(N-1) dan ke-N sudah urut. KUG 1 A 3 Algoritma & Pemrograman 9
ILUSTRASI 5. Ulangi proses sampai (N-1) kali untuk semua elemen. Ø Setelah penukaran tahap III /pass III Data ={ 1, 3, 4, 4, 5, 5, 5 } Setelah ke-4, { Setelah ke-5, { Setelah ke-6, { Setelah ke-7, { Setelah ke-8, { Setelah ke-9, { 1, 1, 1, 3, 3, 3, 4, 4, 4, 4, 4, 4, KUG 1 A 3 Algoritma & Pemrograman 5, 5, 5, 5 5 5 } } } 10
HASIL ILUSTRASI Perhatikan : a) Setelah pass ke-3, sebenarnya Data sudah terurut. Mengapa diulangi terus ? Ø Karena algortima ditetapkan demikian ! Ø Pada kasus ekstrim, saat Data terurut menurun, maka penukaran dilakukan sebanyak (N-1)+(N-2)+(N-3)+. . . +3+2+1 kali. b) Setiap selesai 1 pass, terakhir selalu terurut a) b) c) d) Pass I, Data ke-N terurut Pass II, 2 data terakhir terurut Pass III, 3 data terakhir terurut dst KUG 1 A 3 Algoritma & Pemrograman 11
ILUSTRASI KASUS EKSTRIM Data ={ 9, 8, 7, 6, 5, 4, 3, 2, 1} Pass I, Pass III, Pass IV, Pass VI, Pass VIII, Data={ 8, 7, 6, 5, 4, 3, 2, 1, 9} Data={ 7, 6, 5, 4, 3, 2, 1, 8, 9} Data={ 6, 5, 4, 3, 2, 1, 7, 8, 9} Data={ 5, 4, 3, 2, 1, 6, 7, 8, 9} Data={ 4, 3, 2, 1, 5, 6, 7, 8, 9} Data={ 3, 2, 1, 4, 5, 6, 7, 8, 9} Data={ 2, 1, 3, 4, 5, 6, 7, 8, 9} Data ={ 1, 2, 3, 4, 5, 6, 7, 8, 9} KUG 1 A 3 Algoritma & Pemrograman 12
Bubble Sort Procedure Bubble. Sort(Input N : integer) { Mengurutkan array Tab dg Bubble sort } Kamus i, k, Pass, Temp : integer Algoritma Pass traversal [1. . N-1] k traversal [2. . N-Pass+1] { Bandingkan elemen ke-k dengan elemen ke-k-1} if Tabk-1 > Tabk then Temp Tabk-1 Temp KUG 1 A 3 Algoritma & Pemrograman 13
KETERANGAN Perhatikan : • Pass traversal [1. . N-1] • k traversal [2. . N-Pass+1] • Pada awal pass I : – – • • • k mulai dari 2 k sampai N-Pass+1, Jadi k sampai (5 -1+1)=5 Pada awal pass II, k dari 2 sampai 4 Pada awal pass III, k dari 2 sampai 3 Pada awal pass IV, k dari 2 sampai 2 KUG 1 A 3 Algoritma & Pemrograman 14
CONTOH KASUS Data ={ 9, 1, 5, 3, 2} 9 1 19 5 5 9 3 2 2 9 Setelah pass pertama, nilai Data : Data k Data k-1 Datak-1 k k Datak-1 {Data 1, k-1 k 5, 3, k-1 k 2, 9 k-1 }k > Datak-1 > Data >Data Ya Ya Datak-1 = 1, Data = Data 9 k-1 =k 3, Data = 9 Datak = 9 k 5, k-1 =Datak-1 = 3, Datak = 9 KUG 1 A 3 Algoritma & Pemrograman 15
CONTOH KASUS Setelah pass. I, Data ={ 1, 5, 3, 2, 9} 1 3 5 2 2 5 9 Data Setelah pass kedua, nilai Data : k Data k-1 k k k-1 Datak-1 > Data { Data 1, k-1 k 3, >Data 2, k-1 k 5, > Data 9 }k Tidak Ya Ya Biarkan Data!k-1 =Data 3, Data = 5 Datak = 5 k-1 =k 2, KUG 1 A 3 Algoritma & Pemrograman 16
CONTOH KASUS Setelah pass. II, Data ={ 1, 3, 2, 5, 9} 1 3 2 2 3 5 9 Data k Datak-1 k Setelah pass ketiga, nilai Data : Datak-1 > Data k-1 k > Datak { Tidak 1, 2, Ya 3, 5, 9} Biarkan Data!k-1 = 2, Datak = 3 KUG 1 A 3 Algoritma & Pemrograman 17
CONTOH KASUS Setelah pass. III, Data ={ 1, 2, 3, 5, 9} 1 2 3 5 9 Setelah pass keempat, nilai Data : Datak-1 Datak 1, k 2, Datak-1 >{ Data 3, 5, 9 } Tidak Biarkan ! KUG 1 A 3 Algoritma & Pemrograman 18
Modifikasi Bubble Sort • Seringkali pengulangan tidak perlu dilakukan (N-1)+(N -2) kali, karena data sudah terurut. • Algortima dimodifikasi : – Jika data sudah urut, maka pengulangan dihentikan. – Hal ini perlu pengecekan keterurutan data. • Pengecekan keterurutan : – Data sudah terurut jika tidak ada lagi pertukaran. – Jadi, dapat ditambahkan suatu variabel boolean yang bernilai benar jika masih ada pertukaran, dan salah jika tidak ada lagi pertukaran. KUG 1 A 3 Algoritma & Pemrograman 19
Modified Bubble Sort Kamus k, Pass, Temp : integer; Tukar : boolean Algoritma Pass 1; Tukar true While Pass ≤ N and Tukar do Tukar false k traversal [2. . N-Pass+1] if Tabk-1 > Tabk then Temp Tabk-1 Temp Tukar true Pass + 1 KUG 1 A 3 Algoritma & Pemrograman 20
Selection Sort • Pada prinsipnya, pengurutan juga dapat dilakukan dengan mencari nilai maksimum, kemudian ditukarkan posisinya dengan elemen paling akhir. • Proses dilakukan kembali untuk pass berikutnya, tanpa mengikutsertakan elemen paling akhir. • Proses diteruskan sampai semua elemen dipilih sebagai elelem maksimum, keculai elemen terkecil. • Jadi, proses pencarian nilai maksimum dilakukan sebanyak (N-1) kali. • Selection dg mencari nilai maksimun disebut juga Maximum Sort, sedangkan dengan pencarian nilai minimum disebut juga Minimum Sort. KUG 1 A 3 Algoritma & Pemrograman 21
Selection Sort : Proses dilakukan sebanyak N tahapan/pass : • Tentukan nilai maksimum data dari indeks [1. . N], simpan nilai IMax • Tukar posisi nilai maksimum dengan posisi terakhir Ø Temp Data. Imax Ø Data. Imax Data. N Ø Data. N Temp • Berikutnya dilakukan untuk Data [1. . N-1] • Proses diteruskan sampai Data[1. . 2] • Akan didapatkan Data terurut [1. . N] KUG 1 A 3 Algoritma & Pemrograman 22
CONTOH KASUS Data ={ 9, 1, 5, 3, 2} 9 2 1 5 3 2 9 Setelah pass pertama, nilai Data : Data. Imax Temp= 9 N { 2, nilai 1, maksimum Tukarkan : 5, 3, 9 Cari : } Ø Temp Data. Imax Ø Didapat pada Data 1 Ø Data. Imax Data. N Ø Imax = 1 Ø Data. N Temp KUG 1 A 3 Algoritma & Pemrograman 23
CONTOH KASUS Setelah pass I, Data ={ 2, 1, 5, 3, 9} 2 1 5 3 3 5 9 5 pertama, nilai Data : Setelah pass Temp= Data. N-1 Data. Imax Cari nilai maksimum [1. . N-1]: Tukarkan : { Temp 2, 1, 3, 5, 9 } Ø Data. Imax Ø Didapat pada Data 3 Ø Data. Imax Data. N Ø Imax = 3 Ø Data. N Temp KUG 1 A 3 Algoritma & Pemrograman 24
CONTOH KASUS Setelah pass II, Data ={ 2, 1, 3, 5, 9} 2 1 3 5 9 3: Setelah pass pertama, nilai Data. Imax Temp= Cari nilai maksimum [1. . N-2]: Tukarkan : { 2, 1, Data 3, N-25, 9 } Ø Didapat pada Data 3 Ø Temp Data. Imax Ø Imax Data. N =3 Ø Data. N Temp KUG 1 A 3 Algoritma & Pemrograman 25
CONTOH KASUS Setelah pass III, Data ={ 2, 1, 3, 5, 9} 12 1 2 3 5 9 2 : Setelah pass keempat, nilai Data. N-1 Data. Imax Temp= Cari nilai maksimum [1. . N-3]: Tukarkan : { 1, 2, 3, 5, 9 } Ø Didapat Data 1 Temp pada Data. Imax Ø Data. Imax Terurut ! Imax = 1 Data. N Ø Data. N Temp KUG 1 A 3 Algoritma & Pemrograman 26
Selection Sort Kamus i, Pass, Temp : integer Algoritma Pass traversal [1. . N-1] Imax 1 i traversal [2. . N-Pass+1] if (Tab. Imax < Tabi ) then Imax i Temp Tab. Imax Tab. N-Pass+1 Temp KUG 1 A 3 Algoritma & Pemrograman 27
Selection Sort Kamus i, Pass, Temp : integer Algoritma Pass traversal [0. . N-2] Imax 0 i traversal [1. . N-Pass] if (Tab. Imax < Tabi ) then Imax i Temp Tab. Imax Tab. N-Pass Temp KUG 1 A 3 Algoritma & Pemrograman 28
Insertion Sort • Prinsip kerjanya adalah : menyisipkan nilai elemen pada tempat yang sesuai • Menggunakan penggeseran untuk mencari tempat yang tepat, kemudian menyisipkan ke tempatnya yang seharusnya. KUG 1 A 3 Algoritma & Pemrograman 29
Proses Insertion Sort 1. Data 1 dianggap sudah tepat tempatnya 2. Data 2 harus diposisikan pada tempat yang tepat : sebelum atau setelah Data 1. 3. Data 3 harus dicarikan tempat yang tepat: sebelum Data 1 , sebelum Data 2 atau setelah Data 2. Perhatikan bahwa setelah peletakan posisi, Data 1, Data 2 dan Data 3 terurut. 4. Demikian juga dengan Data 4 dan seterusnya. Setelah peletakan Datai, Data 1 sampai Datai tetap terurut. 5. Proses diteruskan sampai Data. N. KUG 1 A 3 Algoritma & Pemrograman 30
Keterangan Insertion Sort • Pass dimulai dari nilai 2 • Pada setiap Pass, terdapat bagian terurut dan belum terurut. • Tiap saat sebuah elemen tak terurut disisipkan ke bagian yang terurut, dengan cara pergeseran. • Metoda pengurutan ini cukup efisien (≅ N). • Terdapat 2 varian : Tanpa Sentinel / Dengan Sentinel KUG 1 A 3 Algoritma & Pemrograman 31
Insertion Sort : Ilustrasi Indeks 1 Nilai 3 1 7 2 5 2 4 2 3 4 5 6 7 Pertama ( pass 1), susunan sama. Pada pass 2 : Data 2 (1) diposisikan sebelum Data 1 (3) 3 1 1 3 7 2 5 2 4 Setelah pass 2, Data={1, 3, 7, 2, 5, 2, 4} Temp= 1 KUG 1 A 3 Algoritma & Pemrograman 32
Insertion Sort : Ilustrasi Awal pass 3 Nilai 1 3 7 2 5 2 4 Pada pass 3, posisi Data 3 tetap. Pada pass 4 : Data 4 (2) diposisikan sebelum Data 2 (3) 1 2 3 3 7 7 2 5 2 4 3 7 Temp= 2 Setelah pass 2, Data={1, 2, 3, 7, 5, 2, 4} KUG 1 A 3 Algoritma & Pemrograman 33
Insertion Sort : Ilustrasi Awal pass 5 Nilai 1 2 3 7 5 2 4 Pada pass 5 : Data 5 (2) diposisikan sebelum Data 4 (7) 1 2 3 7 5 2 4 Setelah pass 2, Data={1, 2, 3, 5, 7, 2, 4} 7 Temp= 5 KUG 1 A 3 Algoritma & Pemrograman 34
Insertion Sort : Ilustrasi Dengan cara yg sama, pada akhir pass 6 Nilai 1 2 2 3 5 7 4 Pada akhir pass 7 : Nilai 1 2 2 3 4 5 7 KUG 1 A 3 Algoritma & Pemrograman 35
Insertion Sort Kamus i, Pass, Temp : integer Algoritma Pass traversal [2. . N] Temp Tab. Pass i Pass – 1 while ( Temp < Tabi) and (i > 1 ) do Tabi+1 Tabi i i - 1 if Temp ≥ Tabi then Tabi+1 Temp else Tabi+1 Tabi Temp KUG 1 A 3 Algoritma & Pemrograman 36
Insertion Sort with Sentinel Kamus i, Pass, Temp : integer Algoritma Pass traversal [2. . N] Temp Tab. Pass Tab 0 Temp { Sentinel} i Pass – 1 while ( Temp < Tabi) do Tabi+1 Tabi i i-1 Tabi+1 Temp KUG 1 A 3 Algoritma & Pemrograman 37
Soal UAS 0506 Data : 2 3 5 6 2 Jika mengurutan menggunakan Buble Sort, maka A. Pada pass kedua, urutan data adalah : 2 3 5 5 6 2 6 B. Pada pass keempat, data sudah terurut. C. Setelah pass kedua, jumlah total penukaran tempat adalah 3 kali. D. Dalam bubble sort, harus selalu diketahui nilai data terkecil setiap saat. E. Total jumlah ’pass’ yang dilakukan sebanyak n kali, dengan n adalah cacah data. KUG 1 A 3 Algoritma & Pemrograman 38
Soal UAS 0506 Data : 2 3 5 6 2, diurutkan dengan selection sort, maka : A. Pertama temukan elemen array terkecil ( minimum ) dan pertukarkan dengan elemen array di posisi (indeks ) tengah. B. Temukan titik tengah dari array, uji apakah nilai tersebut adalah nilai yang dicari C. Urutan data setelah pass pertama : 2 2 5 6 3 D. Data sudah terurut pada akhir pass ke-5 E. Jumlah ’pass’ untuk tiap menjalankan algoritma tergantung urutan data. KUG 1 A 3 Algoritma & Pemrograman 39
Soal UAS 0506 Berkenaan dengan sorting data : A. Insertion sort memerlukan elemen array penghitung. B. Counting sort perlu data berupa bilangan genap ( positif & negatif ) C. Bubble sort perlu tahu data tertinggi dan terendah. D. Selection sort perlu mencari nilai data yang maksimal. E. Jumlah pengujian Bubble sort adalah (N-1) kali. KUG 1 A 3 Algoritma & Pemrograman 40
- Slides: 40