PENGURUTAN (SORTING)
Definisi Pengurutan Pengurutan (Sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending) atau menurun (descending). Data yang diurut dapat berupa data bertipe dasar atau tipe rekaman. Selain mempercepat pencarian, dari data yang sudah terurut dapat langsung diketahui harga maksimum dan harga minimum.
Pengurutan Internal dan Eksternal Pengurutan internal, yaitu pengurutan terhadap sekumpulan data yang disimpan dalam memori utama komputer. Contohnya larik. Pengurutan eksternal, yaitu pengurutan data yang disimpan di dalam memori sekunder, biasanya data dengan volume besar sehingga tidak mampu dimuat semuanya dalam memori komputer, disebut juga pengurutan asip (file)
Pengurutan Internal dan Eksternal Dua algoritma pengurutan sederhana dan mendasar, yaitu: Algoritma pengurutan Gelembung (Bubble Sort) Algoritma pengurutan Sisip (Insertion Sort)
PENDEKLARASIAN ALGORITMA PENGURUTAN Menggunakan tipe larik sebagai berikut: Deklarasi Const Nmaks = 100 {jumlah maksimum elemen larik } Type Larik : Array [1..Nmaks] of integer
Pengurutan Gelembung Metode pengurutan gelembung (bubble sort) diinspirasi oleh gelembung sabun yang berada diatas permukaan air. Algoritma pengurutan gelembung dapat ditulis secara global sebagai berikut: Untuk setiap langkah ke-i = 1, 2, …, N-1, lakukan: Mulai dari elemen k = n, n-1, …, i+1, lakukan Bandingkan L[k] dengan L[k-1] Pertukaran L[k] dengan L[k-1] jika L[k] < L[k-1]
Pengurutan Gelembung Contoh : Tinjauan larik L dengan N = 6 buah elemen dibawah ini yang belum terurut. Larik ini akan diurut menaik:
Pengurutan Gelembung Pengurutan gelembung untuk larik terurut menaik (ascending) procedure urutgelembung1(input/output L : larik, input n : integer) Deklarasi i : integer { pencacah untuk jumlah angka } k : integer { pencacah untuk pengapungan setiap langkah } temp : integer { peubah bantu untuk pertukaran } Deskripsi for i 1 to n-1 do for k n downto i+1 do if L[k] < L[k-1] then { pertukaran a[j] dengan a[j-1] } temp L[k-1] L[k-1] L[k] L[k] temp endif endfor
Pengurutan Gelembung Bagaimana untuk pengurutan gelembung untuk larik terurut menurun (descending)?
Pengurutan Sisip Pengurutan sisip (Insertion Sort) adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan melakukan pencaarian beruntun dalam larik. Selama pencarian posisi yang tepat dilakukan pergeseran elemen larik.
Pengurutan Sisip Algoritma pengurutan sisip dapat ditulis secara global sebagai berikut: Untuk setiap langkah ke-i = 2, …, n lakukan: X L[i] Sisipkan x pada tempat yang sesuai antara L[1] … L[i] Contoh: Tinjauan larik L dengan N = 6 buah elemen dibawah ini yang belum terurut. Larik ini akan diurut menaik:
Pengurutan Sisip Algoritma Pengurutan Sisip untuk larik terurut menaik (ascending) procedure urutsisip1(input/output L : larik, input n : integer) Deklarasi i : integer { pencacah langkah } j : integer { pencacah untuk penelusuran larik } x : integer { peubah bantu untuk agar L[k] tidak tertimpa } ketemu : boolean { peubah boolean untuk menyatakan posisi sisip}
Pengurutan Sisip Deskripsi { elemen L[1] dianggap sudah terurut } for i 2 to n do x L[i] j i-1 ketemu false while (j ≥ 1) and (not ketemu) do if x < L[j] then L[j+1] L[j] j j-1 else ketemu true endif endwhile { j < 1 or ketemu } L[j+1] x endfor