KUG1A3 Algoritma& Pemrograman Burhanuddin D Prodi S1-Sistem Komputer, F Teknik Elektro Universitas Telkom Presentasi Array 4 : Sorting
KUG1A3 Algoritma & Pemrograman Pokok Bahasan Bubble Sort Selection Sort Insertion Sort ( Opsional ) Latihan KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman 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 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Proses Bubble Sort 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 pada 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. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Data ={ 1, 4, 3, 4, 5, 4, 5, 5, 4 } 1. Bandingkan elemen pertama dan kedua : Jika elemen pertama lebih besar dari elemen kedua, maka tukarkan posisi kedua elemen tersebut. Data1 > Data2 1 > 4 ? Tdk, biarkan 2. Lakukan juga untuk elemen kedua dan ketiga, kemudian ketiga dan keempat dst. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Data ={ 1, 4, 3, 4, 5, 4, 5, 5, 4 } Bandingkan elemen kedua dan ketiga, ketiga dan keempat, dan seterusnya: Data2 > Data3 4 > 3 ? Ya, tukarkan → Data2 = 3, Data3 = 4 Data ={ 1, 3, 4, 4, 5, 4, 5, 5, 4 } Data3 > Data4 4 > 4 ? Tdk, biarkan Data4 > Data5 4 > 5 ? Tdk, biarkan KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Data ={ 1, 3, 4, 4, 5, 4, 5, 5, 4 } Data5 > Data6 5 > 4 ? Ya, tukarkan → Data5 = 4, Data6 = 5 Data ={ 1, 3, 4, 4, 4, 5, 5, 5, 4 } Data6 > Data7 5 > 5 ? Tdk, biarkan Data7 > Data8 5 > 5 ? Tdk, biarkan Data8 > Data9 5 > 4 ? Ya, tukarkan → Data8 = 4, Data9 = 5 Data ={ 1, 3, 4, 4, 4, 5, 5, 4, 5 } KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Sebelum proses penukaran Data ={ 1, 4, 3, 4, 5, 4, 5, 5, 4 } Setelah penukaran tahap I /pass I Data ={ 1, 3, 4, 4, 4, 5, 5, 4, 5 } Pada pembandingan ke N-1, nilai terbesar berada pada posisi ke N. Ini disebut pass I. Perhatikan bahwa nilai elemen ke-N/ terakhir adalah nilai terbesar KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI 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, 4, 5, 5 } Perhatikan bahwa nilai elemen ke-(N-1) dan ke-N sudah urut. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Ulangi proses sampai (N-1) kali untuk semua elemen. Setelah penukaran tahap III /pass III Data ={ 1, 3, 4, 4, 4, 4, 5, 5, 5 } Setelah ke-4,{ 1, 3, 4, 4, 4, 4, 5, 5, 5 } Setelah ke-5,{ 1, 3, 4, 4, 4, 4, 5, 5, 5 } Setelah ke-6,{ 1, 3, 4, 4, 4, 4, 5, 5, 5 } Setelah ke-7,{ 1, 3, 4, 4, 4, 4, 5, 5, 5 } Setelah ke-8,{ 1, 3, 4, 4, 4, 4, 5, 5, 5 } Setelah ke-9,{ 1, 3, 4, 4, 4, 4, 5, 5, 5 } KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman HASIL ILUSTRASI Perhatikan : 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. Setiap selesai 1 pass, terakhir selalu terurut Pass I, Data ke-N terurut Pass II, 2 data terakhir terurut Pass III, 3 data terakhir terurut dst KUG1A3 Algoritma & Pemrograman
ILUSTRASI KASUS EKSTRIM Data ={ 9,8,7,6,5,4,3,2,1} Pass I, Data={ 8,7,6,5,4,3,2,1,9} Pass II, Data={ 7,6,5,4,3,2,1,8,9} Pass III, Data={ 6,5,4,3,2,1,7,8,9} Pass IV, Data={ 5,4,3,2,1,6,7,8,9} Pass V, Data={ 4,3,2,1,5,6,7,8,9} Pass VI, Data={ 3,2,1,4,5,6,7,8,9} Pass VII, Data={ 2,1,3,4,5,6,7,8,9} Pass VIII, Data ={ 1,2,3,4,5,6,7,8,9} KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Bubble Sort Procedure BubbleSort(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 Tabk Tabk-1 Tabk-1 Temp KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman 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 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman CONTOH KASUS Data ={ 9,1,5,3,2} 9 1 5 1 9 9 3 5 9 3 2 9 2 Setelah pass pertama, nilai Data : { 1, 5, 3, 2, 9 } Datak Datak-1 Datak-1 Datak Datak Datak-1 Datak Datak-1 Datak-1 > Datak Datak-1 > Datak Datak-1 > Datak Datak-1 > Datak Ya Ya Ya Ya Datak-1 = 1, Datak = 9 Datak-1 = 5, Datak = 9 Datak-1 = 3, Datak = 9 Datak-1 = 3, Datak = 9 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman CONTOH KASUS Setelah passI, Data ={ 1,5,3,2,9} 3 1 5 2 3 5 5 2 9 Setelah pass kedua, nilai Data : { 1, 3, 2, 5, 9 } Datak Datak-1 Datak-1 Datak Datak Datak-1 Datak-1 > Datak Datak-1 > Datak Datak-1 > Datak Tidak Ya Ya Biarkan ! Datak-1 = 3, Datak = 5 Datak-1 = 2, Datak = 5 KUG1A3 Algoritma & Pemrograman
1 2 3 3 2 5 9 CONTOH KASUS Setelah pass ketiga, nilai Data : Setelah passII, Data ={ 1,3,2,5,9} 1 2 3 3 2 5 9 Datak Datak-1 Datak-1 Datak Setelah pass ketiga, nilai Data : { 1, 2, 3, 5, 9 } Datak-1 > Datak Datak-1 > Datak Tidak Ya Biarkan ! Datak-1 = 2, Datak = 3 KUG1A3 Algoritma & Pemrograman
1 2 3 5 9 CONTOH KASUS Setelah pass keempat, nilai Data : Setelah passIII, Data ={ 1,2,3,5,9} 1 2 3 5 9 Setelah pass keempat, nilai Data : { 1, 2, 3, 5, 9 } Datak-1 Datak Datak-1 > Datak Tidak Biarkan ! KUG1A3 Algoritma & Pemrograman
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. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman 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 Tabk Tabk-1 Tabk-1 Temp Tukar true Pass Pass + 1 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman 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. KUG1A3 Algoritma & Pemrograman
Selection Sort : Proses 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 DataImax DataImax DataN DataN Temp Berikutnya dilakukan untuk Data [1..N-1] Proses diteruskan sampai Data[1..2] Akan didapatkan Data terurut [1..N] KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman CONTOH KASUS Data ={ 9,1,5,3,2} 2 9 1 5 3 9 2 Setelah pass pertama, nilai Data : { 2, 1, 5, 3, 9 } 9 DataN DataImax Temp= Tukarkan : Temp DataImax DataImax DataN DataN Temp Cari nilai maksimum : Didapat pada Data1 Imax = 1 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman CONTOH KASUS Setelah pass I, Data ={ 2,1,5,3,9} 2 1 5 3 5 3 9 5 DataImax DataN-1 Temp= Setelah pass pertama, nilai Data : { 2, 1, 3, 5, 9 } Tukarkan : Temp DataImax DataImax DataN DataN Temp Cari nilai maksimum [1..N-1]: Didapat pada Data3 Imax = 3 KUG1A3 Algoritma & Pemrograman
2 1 3 5 9 3 CONTOH KASUS Setelah pass pertama, nilai Data : Setelah pass II, Data ={ 2,1,3,5,9} 2 1 3 5 9 3 DataImax Temp= Setelah pass pertama, nilai Data : { 2, 1, 3, 5, 9 } Cari nilai maksimum [1..N-2]: Didapat pada Data3 Imax = 3 Tukarkan : Temp DataImax DataImax DataN DataN Temp DataN-2 KUG1A3 Algoritma & Pemrograman
CONTOH KASUS Setelah pass III, Data ={ 2,1,3,5,9} 1 2 2 1 3 5 9 2 DataImax DataN-1 Temp= Setelah pass keempat, nilai Data : { 1, 2, 3, 5, 9 } Terurut ! Cari nilai maksimum [1..N-3]: Didapat pada Data1 Imax = 1 Tukarkan : Temp DataImax DataImax DataN DataN Temp KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Selection Sort Kamus i,Pass, Temp : integer Algoritma Pass traversal [1..N-1] Imax 1 i traversal [2..N-Pass+1] if (TabImax < Tabi ) then Imax i Temp TabImax TabImax TabN-Pass+1 TabN-Pass+1 Temp KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Selection Sort Kamus i,Pass, Temp : integer Algoritma Pass traversal [0..N-2] Imax 0 i traversal [1..N-Pass] if (TabImax < Tabi ) then Imax i Temp TabImax TabImax TabN-Pass TabN-Pass Temp KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman 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. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Proses Insertion Sort Data1 dianggap sudah tepat tempatnya Data2 harus diposisikan pada tempat yang tepat : sebelum atau setelah Data1 . Data3 harus dicarikan tempat yang tepat: sebelum Data1 , sebelum Data2 atau setelah Data2. Perhatikan bahwa setelah peletakan posisi, Data1, Data2 dan Data3 terurut. Demikian juga dengan Data4 dan seterusnya. Setelah peletakan Datai, Data1 sampai Datai tetap terurut. Proses diteruskan sampai DataN . KUG1A3 Algoritma & Pemrograman
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 KUG1A3 Algoritma & Pemrograman
Insertion Sort : Ilustrasi Indeks 1 2 3 4 5 6 7 3 1 7 2 5 2 4 Nilai Pertama ( pass1), susunan sama. Pada pass 2 : Data2 (1) diposisikan sebelum Data1 (3) 1 3 1 3 7 2 5 2 4 1 Setelah pass 2, Data={1,3,7,2,5,2,4} Temp= KUG1A3 Algoritma & Pemrograman
Insertion Sort : Ilustrasi Awal pass 3 1 3 7 2 5 2 4 Nilai Pada pass 3, posisi Data3 tetap. Pada pass 4 : Data4 (2) diposisikan sebelum Data2 (3) 1 2 3 7 3 2 7 5 2 4 3 7 2 Temp= Setelah pass 2, Data={1,2,3,7,5,2,4} KUG1A3 Algoritma & Pemrograman
Insertion Sort : Ilustrasi Awal pass 5 1 2 3 7 5 2 4 Nilai Pada pass 5 : Data5 (2) diposisikan sebelum Data4 (7) 1 2 3 7 5 7 5 2 4 7 5 Setelah pass 2, Data={1,2,3,5,7,2,4} Temp= KUG1A3 Algoritma & Pemrograman
Insertion Sort : Ilustrasi Dengan cara yg sama, pada akhir pass 6 1 2 2 3 5 7 4 Nilai Pada akhir pass 7 : 1 2 2 3 4 5 7 Nilai KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Insertion Sort Kamus i,Pass, Temp : integer Algoritma Pass traversal [2..N] Temp TabPass 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 Tabi Temp KUG1A3 Algoritma & Pemrograman
Insertion Sort with Sentinel Kamus i,Pass, Temp : integer Algoritma Pass traversal [2..N] Temp TabPass Tab0 Temp { Sentinel} i Pass – 1 while ( Temp < Tabi) do Tabi+1 Tabi i i - 1 Tabi+1 Temp KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Soal UAS0506 Data : 2 3 5 6 5 6 2 Jika mengurutan menggunakan Buble Sort, maka Pada pass kedua, urutan data adalah : 2 3 5 5 6 2 6 Pada pass keempat, data sudah terurut. Setelah pass kedua, jumlah total penukaran tempat adalah 3 kali. Dalam bubble sort, harus selalu diketahui nilai data terkecil setiap saat. Total jumlah ’pass’ yang dilakukan sebanyak n kali, dengan n adalah cacah data. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Soal UAS0506 Data : 2 3 5 6 5 6 2 , diurutkan dengan selection sort, maka : Pertama temukan elemen array terkecil ( minimum ) dan pertukarkan dengan elemen array di posisi (indeks ) tengah. Temukan titik tengah dari array, uji apakah nilai tersebut adalah nilai yang dicari Urutan data setelah pass pertama : 2 2 5 6 5 6 3 Data sudah terurut pada akhir pass ke-5 Jumlah ’pass’ untuk tiap menjalankan algoritma tergantung urutan data. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Soal UAS0506 Berkenaan dengan sorting data : Insertion sort memerlukan elemen array penghitung. Counting sort perlu data berupa bilangan genap ( positif & negatif ) Bubble sort perlu tahu data tertinggi dan terendah. Selection sort perlu mencari nilai data yang maksimal. Jumlah pengujian Bubble sort adalah (N-1) kali. KUG1A3 Algoritma & Pemrograman