Sorting (Pengurutan)
Macam-macam Metode Pengurutan: Penyisipan langsung ( straight insertion sort) Seleksi (selection sort)
Pengurutan Definisi algoritma : ‘ algoritma pengurutan adalah untuk meletakkan kumpulan elemen data ke dalam urutan tertentu, berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen’ Ada 2 macam urutan dalam proses pengurutan: Ascending Descending
Mengapa data harus diurutkan? Agar data dapat dilihat dengan mudah. Pengurutan disini mengenai data larik. Const max = 1000 ; Var Data : Array [0 .. Max] of word; Indeks larik dimulai dari 0. data yang sebenarnya disimpan mulai dari indeks 1, tetapi ada metode pengurutan yang memerlukan penampung sementara sehingga digunakan indeks 0.
Metode Pengurutan Beberapa metode pengurutan akan menemukan pemanggilan TUKAR. Kegunaan prosedur ini adalah menukar isi dua variabel. Berikut definisi Tukar : Procedure Tukar (var Data1, Data2 : word); Var temp : word; Begin temp := Data1; Data1 := Data2; Data2 := Data1; End;
Contoh pengurutan data Untuk contoh di gunakan data bilangan bulat berjumlah sembilan yaitu: Kita akan mengurutkan data diatas menjadi urut naik, seperti; 12 35 9 11 3 17 23 15 31 3 9 11 12 15 17 23 31 35
Menilai pengurutan yang baik Ada 2 hal untuk menilai pengurutan yang baik: Jumlah pembandingan yang dilakukan atau sering disingkat dengan simbol C Jumlah penukaran atau penggeseran data yang dilakukan atau sering disingkat dengan M
1 .Metode Penyisipan Langsung (straight insertion sort) Data di cek satu persatu mulai dari yang ke dua sampai dengan yang terakhir. Apabila ditemukan data yang lebih kecil dari sebelumnya, maka data disisipkan ke posisi yang sesuai. Misalnya; pengurutan kartu
Algoritma Penyisipan Langsung Selama (i<=N) kerjakan baris 3 sampai dengan10 x Data[i] Data[0] x j i – 1 Selama (x < Data[j] ) kerjakan baris 7 dan 8 Data [j+i] Data [j] j j – 1 Data[j+1] x i i + 1
Proses pengurutan Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Awal 12 35 9 11 3 17 23 15 31 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 Akhir
Penjelasan i = 2, x samadengan Data[2], yaitu 35 dan j=1. karena Data[1]=12 dan 35>12 maka proses dilanjutkan i=3, x samadengan Data[3], yaitu 9 dan j=2. karena Data[2]=35 dan 9<35 maka dilakukan penggeseran sampai menemukan yang lebih kecil dari 9. Hasilnya, Data[2]=12 dan Data[3]=35. Bagaimana dengan Data[1]? Data[1] = x yaitu 9. i=4, x samadengan Data[4], yaitu 11 dan j=3. karena Data[3]=35 dan 11<35, maka dilakukan penggeseran sampai ditemukan data yang lebih kecil dari 11. Hasil penggeseran Data[3]=12 dan Data[4]=45, Data[2] diisi 11 dst a
Mengapa diperlukan Data[0]? Untuk berjaga-jaga apabila data yang sedang dipindah lebih kecil daripada Data[1]. Contohnya pada saat i=3, data yang digeser adalah 9 yang lebih kecil dari 12. Apabila tidak ada Data[0] maka kondisi (x<Data[j]) akan selalu terpenuhi, artinya kalang tidak pernah terpenuhi.
Contoh prosedur penyisipan langsung Procedure StraightInsertionSort; Var i, j , x : word; Begin for i := 2 to N do begin x := Data[i]; Data[0] := x; j := i – 1; while (x < Data[j]) do Data[j + 1] := Data[j]; dec (j); end; Data[j + 1] := x; End;
Tugas 1: Buat pengurutan dengan metode Penyisipan Langsung (straight insertion sort) dari bilangan di bawah ini : 23, 46, 20, 22, 14, 28, 34, 26, 41
2. Metode Seleksi (selection sort) Melakukan pengurutan dengan cara mencari data yang terkecil kemudian menukarkannya dengan data yang digunakan sebagai acuan disebut pivot. Mula-mula dilakukan pengulangan dari 1 sampai dengan (N – 1). Tiap-tiap pengulangan dicari data yang paling kecil diantara data ke (i + 1) sampai data terakhir (=N). Data terkecil ditukarkan dengan pivot, yaitu data ke-i. Apabila data terkecil tersebut lebih keci dari data ke-im proses penuakaran tidak perlu dilakukan.
Algoritma Seleksi i 1 Selama ( i <= N-1) kerjakan baris 3 sampai 9 k i j i + 1 Selama ( j <= N) kerjakan baris 6 dan 7 Jika (Data[k] > Data[j]) maka k j j j + 1 Tukar Data[i] dengan Data[k] i i + 1
Proses pengurutan seleksi Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Data [6] Data [7] Data [8] Data [9] Awal 12 35 9 11 3 17 23 15 31 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 Akhir
Penjelasan Saat i=1, data yang terkecil diantara data ke-2 sampai 9 adalah data ke-5, yaitu 3. Kemudian data ke-1 yaitu 12 ditukar dengan data ke-5 yaitu 3 Saat i=2, data yang terkecil diantara data ke-3 sampai 9 adalah data ke-3, yaitu 9. Kemudian data ke-2 yaitu 35 ditukar dengan data ke-3 yaitu 9 Saat i=3, data yang terkecil diantara data ke-4 sampai 9 adalah data ke-4, yaitu 11. Kemudian data ke-3 yaitu 35 ditukar dengan data ke-4 yaitu 11 dst
Prosedur Metode Seleksi Procedure SelectionSort; Var i, j, k : word; Begin for i := 1 to N – 1 do begin k := i; for j := i + 1 to N do if (Data[k] > Data[j]) then k := j; Tukar (Data[i], Data[k]); end; End;
Tugas 2: 50, 40, 60, 30, 70, 20, 90, 10, 100 nim genap 23, 46, 20, 22, 14, 28, 34, 26, 41 nim ganjil Buat pengurutan seleksi (selection sort) dari bilangan di atas. Buat pengurutan dengan metode Penyisipan Langsung (straight insertion sort) dari bilangan di atas.
---selesai----