SORTING (PENGURUTAN)
PENDAHULUAN
Setelah
mempelajari bab ini diharapkan mahasiswa mampu :
- Menunjukkan beberapa algoritma dalam pengurutan.
- Menunjukkan bahwa pengurutan merupakan suatu
persoalan yang bisa diselesaikan dengan sejumlah algoritma yang berbeda
satu sama lain.
- Dapat
memilih algoritma yang paling sesuai untuk menyelesaikan suatu
permasalahan pemrograman.
PENYAJIAN (TUTORIAL)
Pengurutan
data (sorting) didefinisikan sebagai suatu proses untuk
menyusun kembali himpunan obyek menggunkan aturan tertentu. Ada dua macam urutan yang bisa digunakan dalam proses
pengurutan yaitu :
- Urutan
naik (ascending) yaitu dari data
yang mempunyai nilai paling kecil sampai paling besar.
- Urutan
turun (descending) yaitu dari
data yang mempunyai nilai paling besar sampai paling kecil.
Contoh
: data bilangan 5, 2, 6, dan 4 dapat diurutkan naik menjadi 2, 4, 5, 6 atau
diurutkan menjadi 6, 5, 4, 2. Pada data yang bertipe char, nilai data dikatakan
lebih kecil atau lebih besar dari yang lain didasarkan pada urutan relative (collating sequence) seperti dinyatakan
dalam tabel ASCII. Keuntungan dari data yang sudah dalam keadaan terurut yaitu
:
Data mudah dicari, mudah untuk dibetulkan, dihapus,
disisipi atau digabungakan. Dalam keadaan terurutkan, kita mudah melakukan
pengecekan apakah ada data yang hilang. Misalnya kamus Bahasa, buku telepon.
Mempercepat proses pencarian data yang harus dilakukan berulang kali.
Beberapa factor yang berpengaruh pada efektifitas suatu
algoritma pengurutan antara lain :
-
Banyak data yang
diurutkan.
-
Kapasitas pengingat
apakah mampu menyimpan semua data yang kita miliki.
-
Tempat penyimpanan
data, misalnya piringan, pita tau kartu, dll.
Beberapa algoritma metode pengurutan dan prosedurnya
sebagai berikut :
- Bubble Sort
Bubble Sort adalah suatu metode pengurutan yang
membandingkan elemen yang sekarang dengan elemen berikutnya. Apabila elemen
sekarang > elemen berikutnya, maka posisinya ditukar. Kalua tidak, tidak
perlu ditukar. Diberi nama “Bubble” karena proses pengurutan secara
berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung
yang keluar dari sebuah gelas bersoda.
Proses Bubble Sort:
Data
paling akhir dibandingkan dengan data di depanya, jika ternyata lebih kecil
atau besar maka tukar sesuai dengan kekuatan ( descending atau ascending). Dan
pengecekan yang sama dilakukan terhadap data yang selanjutnya sampai data yang
paling awal.
Algoritma Bubble Sort :
- i=0
- selama (i<N-1) kerjakan
baris 3 sampai 7
- j=N-1
- selama (j>=i) kerjakan
baris 5 sampai 7
- jika (Data[j-1] > Data[j])
maka tukar Data[j-1] dengan Data[j]
- j=j-1
- i=i+1
prosedur yang menggunakan metode
gelembung :
void BubbleSort()
{
int
i,j;
for(i=1;
i<Max; i++)
for(j=Max-1;
j>=I; j--)
if(Data[j-1]
> Data[j])
Tukar(&Data[j-1],
&Data[j]);
}
- Selection Sort
Metode
seleksi melakukan pengurutan dengan cara mencari data yang terkecil kemudian
menukarkanya dengan data yang digunakan sebagai acuan atau sering dinamakan
pivot. Selama proses, pembandingan dan pengubahan hanya
dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi
pada akhir proses. Proses pengurutan dengan metode seleksi dapat dijelaskan
sebagai berikut :
Langkah pertama dicari data terkecil
dari data pertama sampai data terakhir. Kemudian data terkecil ditukar dengan
data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling
kecil dibanding data yang lainnya.
Langkah kedua, data terkecil kita
cari mulai dari data kedua sampai terakhir. Data terkecil yang kita peroleh
ditukar dengan data kedua dan deikian seterusnya sampai semua elemen dalam
keadaan terurutkan.
Algoritma seleksi dapat dituliskan
sebagai berikut :
- i=0
- selama (i<N-1) kerjakan
baris 3 sampai dengan 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
Di bawah ini merupakan prosedur
yang menggunakan metode seleksi :
void SelectionSort()
{
k=i;
for(j=i+1;
j<Max; j++)
if(Data[k]
> Data[j])
k=j;
Tukar(&Data[i],
&Data[k]);
}
}
- Marger Sort
Algoritma
Marge Sort ialah algoritma pengurutan yang berdasarkan pada strategi dovide and conquer. Algoritma ini terdiri dari dua bagian utama, pembagian
list yang diberikan untuk di-sort ke dalam beberapa sublist yang lebih kecil,
dan sort (mengurutkan) dan marge (menggabungkan) sublist-sublist yang lebih kecil ke dalam list yang sudah
diurutkan. Pembagian bisa dikatakan cukup mudah karena sublist-sublist tersebut
dibagi kedalam dua sublist yang ukuranya adalah setengah dari ukuran semula.
Hal ini terus diulang sampai sublist itu cukup kecil untuk di-sort secara efisien (umumnya telah
terdiri dari satu atau dua elemen). Dalam langkah marge dua sublist disatukan kembali dan diurutkan
pada saat yang sama. Algoritma untuk merge
sort ialah sebagai berikut :
A.
Untuk kasus n=1, maka tabe a sudah terurut sendirinya
(langkah solve)
B.
Untuk kasus n>1, maka :
a.
DIVINE: bagi table a menjadi dua bagian, bagian kiri
dan bagian kanan, masing-masing bagian berukuran n/2 elemen.
b.
CONOQUER: secara rekursif, terapkan algoritma D-and-C
pada masing-masing bagian.
c.
MERGE: gabung hasil pengurutan kedua bagian sehingga
diperoleh table a yang terurut.
Komentar
Posting Komentar