Pengurutan adalah proses mengatur sekumpulan obyek menurut urutan atau susunan tertentu. Urutan obyek tersebut dapat menaik atau menurun. Bila N obyek disimpan dalam larik L, maka pengurutan menaik berarti menyusun elemen larik sedemikian sehingga: L[1] L[2] L[3] L[N]
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 1
Sedangkan pengurutan menurun berarti menyusun elemen larik sedemikian sehingga: L[1] L[2] L[3] L[N] Data yang diurut dapat berupa data bertipe numerik dasar atau tipe bentuk. Jika data bertipe bentukan (rekaman), maka harus dijelaskan berdasarkan field apa data tersebut diurutkan. Contoh: (i) 23, 27, 45, 67 (data integer terurut menaik) (ii) 25.12, 20.19,-12.20 (data riil terurut menurun) (iii) Amir, Badu, Budi, Dudi (data string terurut manaik) (iv) <08053110001, Eko, A>, < 08053110011, Reza, C>, <08053110012, Sam, E> (data mahasiswa terurut menaik berdasarkan field NIM)
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 2
Macam-macam Pengurutan
Bubble Sort; Maximum/Minimum Sort (Selection Sort); Insertion Sort; Heap Sort; Shell Sort; Quick Sort; Merge Sort; Radix Sort; Tree Sort, dan lain-lain.
Algoritma dan Pemrograman II 5
Pengurutan Gravitasi
Pengurutan gravitasi sebagai kebalikan dari pengurutan gelembung, yaitu membenamkan elemen larik yang berharga paling besar ke bawah, jadi proses pemberatan selalui dimulai dari atas ke bawah.
10
Pengurutan Maksimum/Minimum
Gagasan maksimum/minimum adalah memilih elemen maksimum/minimum kemudian mempertukarkan elemen maksimum/minimum tersebut dengan elemen terujung larik (elemen ujung kiri atau elemen ujung kanan). Selanjutnya elemen terujung tersebut diisolasi dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa, yaitu memilih elemen maksimum/minimum berikutnya dan mempertukarkannya dengan elemen terujung larik sisa.
11 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 12
Algoritma UN for I 1 to N-1 do for K 1 to U-1 do if L[K] > L[K+1] then {pertukarkan L[K] dengan L[K+1]} Temp L[K] L[K] L[K-1] L[K-1] Temp endif endfor { larik L[U..N] terurut, larik L[1..U-1] belum terurut } UU-1 endfor
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II
14
for I 1 to N-1 do Imaks I for J I+1 to N do if L[J] > L[Imaks] then Imaks J endif endfor {pertukarkan Maks dengan L[U]} Temp L[I] L[I] L[Imaks] L[Imaks] Temp endfor
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 16
for I 1 to N-1 do Imin I for J I+1 to N do if L[J] < L[Imin] then Imin J endif endfor {pertukarkan Maks dengan L[U]} Temp L[I] L[I] L[Imin] L[Imin] Temp endfor
20
21
22