PENGURUTAN ( SORTING ) Fajrizal
Pengurutan data (sorting) merupakan contoh yang baik untuk menunjukkan bahwa suatu persoalan bisa diselesaikan dengan sejumlah algoritma yang berbeda satu sama lain lengkap dengan kelebihan dan kekurangannya. Sorting dapat didefinisikan sebagai suatu proses untuk menyusun kembali himpunan objek menggunakan aturan tertentu. Sorting dapat dibagi atas 2 jenis pengurutan data yaitu : Ascending ( urut naik ) Descending ( urut turun )
Algoritma sorting secara umum Procedure sort ( list ) ; jika panjang list > 1, kerjakan { bagi list menjadi dua bagian : List_atas dan list_bawah } sort ( list_bawah ) ; sort ( list_atas ) ; gabungkan ( list_bawah, list_atas )
MERGE SORT !! Algoritma Merge sort : Bagi list menjadi 2 sublist yang panjangnya kira-kira sama. Urutkan kedua sublist secara terpisah ( sendiri-sendiri ). Gabungkan kedua sublist yang sudah urut menjadi list yang urut. Contoh data: L.Jumlah = 10 L.Data [ 1 .. ( L.jumlah ) ] = { 8, 28, 2, 12, 4, 150, 1, 50, 350, 43 }
Dari contoh diatas, maka data diurut : Satu : ( jadikan 2 sublist ) L_bawah = { 8, 28, 2, 12, 4 } L_atas = { 150, 1, 50, 350, 43 } Dua : ( urutkan data pd masing2 sublist ) L_bawah = { 2, 4, 8, 12, 28 } L_atas = { 1, 43, 50, 150, 350 } Tiga : ( gabungkan 2 sublist & urutkan ) L = { 1, 2, 4, 8, 12, 28, 43, 50, 150, 350 }
QUICK SORT !! Deskripsi untuk algoritma quick sort adalah : Pilih elemen pivot Pisahkan list menjadi 2 sublist, dimana elemen pd sublist bawah semuanya lebih kecil dari elemen pivot, dan elemen pd sublist atas lebih besar dari elemen pivot. Tempatkan elemen pivot pd lokasi akhir yg tepat. Urutkan secara terpisah masing-masing sublist dari langkah 2. Gabungkan kedua sublist yg sudah terurut tadi.
Misal pivot yg dipilih = 50 List_bawah = { 8, 28, 2, 12, 4, 150, 1 } List_atas = { 350, 43 } 3. List_bawah = { 8, 28, 2, 12, 4, 150,1, 50 } 4. List_bawah = { 1,2,4,8,12,28,50,150 } list_atas = { 43, 350 } 5. List = { 1,2,4,8,12,28,43,50,150,350 )
INSERTION SORT !! Deskripsi untuk algoritma insertion sort adalah : Mulai dengan elemen petama list. List ini pasti sudah dalam keadaan urut. Periksa satu persatu elemen yang ada, dengan cara membandingkan antara 2 elemen, dan langsung posisikan diawal susunan data jika elemen tersebut lebih kecil, dan seterusnya sampai semua elemen telah dibandingkan.
Contoh : L { 8, 28, 2, 12, 4, 150, 1, 50, 350, 43 } satu : ( elemen pertama list ) L = { 8 } dua : ( 2 elemen pertama ) L = { 8 & 28 } menjadi L = { 8, 28 } Seterusnya { 8, 28, 2 } Menjadi { 2, 8, 28 }
SELECTION SORT Algoritma ini adalah menghindari proses pemindahan data yang berlebihan seperti yg terjadi pd insertion sort. Proses ini dimulai dengan memeriksa seluruh elemen list untuk menemukan elemen terkecil dan diletakkan pada indeks pertama. Langkah yg sama dilakukan lagi untuk menemukan elemen terkecil kedua dan diteruskan untuk elemen-elemen berikutnya
Algoritma untuk metode ini : Untuk I dalam range indeks untuk elemen pertama hingga elemen ke-2 dari belakang, kerjakan : 1. Cari data tekecil dalam list pada range indeks I hingga indeks terakhir. 2. Tukarkan elemen terkecil yg ditunjuk pada langkah 1 dengan elemen ke-I