Anda di halaman 1dari 4

Algoritma Sorting dan Implementasinya Istilah sorting tentu tidak asing di telinga kita, yaitu istilah untuk mengurutkan

data. Ada dua bentuk sorting yaitu secara ascending dan descending. Sorting secara ascending adalah cara mengurutkan data mulai data bernilai terkecil sampai terbesar. Sedangkan descending mengurutkan data mulai dari data terbesar sampai terkecil. Sebagai contoh misalkan diberikan data berupa bilangan berikut ini: 391402 Hasil sorting ascending adalah 0 1 2 3 4 9, dan hasil secara descending adalah 9 4 3 2 1 0. Nah pada artikel kali ini akan dibahas bagaimana kita mencari algoritma untuk melakukan sorting ini sekaligus implementasinya. OK, misalkan diberikan data sebagaimana data di atas. Bagaimana cara kita mengurutkan data secara ascending? Yup untuk memudahkan pemrosesan data, lebih enak kalau kita nyatakan terlebih dahulu data bilangan di atas ke dalam bentuk notasi xi dengan i = 1, 2, , 6. Sehingga dalam hal ini x1=3, x2=9, x3=1, x4=4, x5=0 dan x6=2. Nah selanjutnya apabila kita ingin mengurutkan data secara ascending, maka harapan kita urutan data pertama adalah data yang memiliki nilai paling kecil. Oleh karena itu kita harus mencari data terkecil dari semua data yang ada, lalu tempatkan ia ke data urutan pertama. Lho lantas, bagaimana dengan data urutan pertama sebelumnya? Bukankah nantinya dia akan tertimpa dengan data terkecil itu? Oh tidak data urutan pertama sebelumnya akan kita tukar tempatnya dengan milik data terkecil. Misalkan data terkecil terletak pada urutan ke-4 dari seluruh data, maka data pertama kita tempatkan ke urutan ke-4 dan data terkecil diletakkan ke urutan pertama. Ini dia pseudocode dalam Pascal untuk mencari nilai terkecil dari semua data (x 1, x2, , x6) sekaligus mencari tempatnya. view sourceprint? 01.min := x[1]; 02.for i:=1 to 6 do 03.begin 04.if (x[i] <= min) then 05.begin 06.min := x[i]; 07.tempatnya_min := i; 08.end; 09.end; Jadi pertama-tama, kita anggap nilai minimum adalah x1. Lalu nilai minimum ini kita bandingkan dengan semua data yang ada. Jika ditemukan nilai x i yang lebih kecil atau sama dengan nilai minimum, maka xi itulah nilai minimum yang baru, sekaligus tempat miliknya data minimum ini (i) kita catat. Nah setelah nilai minimum dari

semua data ditemukan, maka selanjutnya kita tukar tempat nilai minimum tadi dengan tempat data pertama. view sourceprint? 1.temp := x[1]; 2.x[1] := x[tempatnya_min]; 3.x[tempatnya_min] := temp; Sehingga pseudocode proses mencari nilai terkecil dan menukar tempatnya dengan data pertama menjadi view sourceprint? 01.min := x[1]; 02.for i:=1 to 6 do 03.begin 04.if (x[i] <= min) then 05.begin 06.min := x[i]; 07.tempatnya_min := i; 08.end; 09.end; 10. 11.temp := x[1]; 12.x[1] := x[tempatnya_min]; 13.x[tempatnya_min] := temp; Nah setelah ditukar tempat antara data pertama dengan data terkecil maka urutan data menjadi 091432 Proses selanjutnya, kita ulangi lagi proses yang sama yaitu mencari data terkecil dari kelompok data urutan ke-2 sampai dengan ke-6. Lalu tukar tempat data terkecil tersebut dengan tempat data urutan ke-2. Berikut ini pseudocodenya view sourceprint? 01.min := x[2]; 02.for i:=2 to 6 do 03.begin 04.if (x[i] <= min) then 05.begin 06.min := x[i]; 07.tempatnya_min := i; 08.end; 09.end; 10. 11.temp := x[2]; 12.x[2] := x[tempatnya_min]; 13.x[tempatnya_min] := temp;

Tukar tempat antara data minimum dengan data ke-2 menghasilkan urutan data 019432 Proses yang sama kembali dilakukan untuk kelompok data mulai urutan ke-3 sampai ke-6. Cari nilai minimumnya, lalu tukar tempat dengan data ke-3. Begitu seterusnya sampai dengan kelompok data ke-6 sampai ke-6. Berikut ini hasil urutan data untuk setiap proses hasil urutan untuk kelompok data x3 s/d x6 : hasil urutan untuk kelompok data x4 s/d x6 : hasil urutan untuk kelompok data x5 s/d x6 : hasil urutan untuk kelompok data x6 s/d x6 : 0 1 2 3 4 9 0 0 0 1 1 1 2 2 2 4 3 3 3 4 4 9 9 9

Nah setelah proses selesai diperolehlah data yang terurut secara ascending. Pada contoh ini sebenarnya proses sorting ascending selesai pada kelompok data x4 s/d x6. Namun untuk keperluan generalisasi (bisa diterapkan ke semua kasus) maka kita selesaikan proses sampai dengan kelompok data terakhir. Dengan demikian secara umum, untuk data x1 xn, berikut ini pseudocode untuk sorting secara ascending view sourceprint? 01.for kelompok := 1 to n do 02.begin 03.min := x[kelompok]; 04.for i := kelompok to n do 05.begin 06.if (x[i] <= min) then 07.begin 08.min := x[i]; 09.tempatnya_min := i; 10.end; 11.end; 12. 13.temp := x[kelompok]; 14.x[kelompok] := x[tempatnya_min]; 15.x[tempatnya_min] := temp; 16.end; Sedangkan berikut ini contoh implementasi algoritma sorting ascending di atas pada kasus yang diberikan di atas. view sourceprint? 01.program sorting; 02.var x : array[1..100] of integer; 03.i, n, min, kelompok, temp, tempatnya_min : integer; 04.begin 05.{ membuat data array yang terdiri dari data : 3 9 1 4 0 2 } 06.

07.x[1] := 3; 08.x[2] := 9; 09.x[3] := 1; 10.x[4] := 4; 11.x[5] := 0; 12.x[6] := 2; 13. 14.n := 6; {jumlah data} 15. 16.{ proses sorting ascending } 17. 18.for kelompok := 1 to n do 19.begin 20.min := x[kelompok]; 21.for i := kelompok to n do 22.begin 23.if (x[i] <= min) then 24.begin 25.min := x[i]; 26.tempatnya_min := i; 27.end; 28.end; 29. 30.temp := x[kelompok]; 31.x[kelompok] := x[tempatnya_min]; 32.x[tempatnya_min] := temp; 33.end; 34. 35.{ menampilkan hasil sorting } 36. 37.for i:=1 to n do 38.begin 39.writeln(x[i], ' '); 40.end; 41.end. Lantas bagaimana dengan sorting descending? Ya berarti kita tidak lagi mencari data minimum, tapi data maksimum. Bagaimana caranya? ya tinggal ubah saja tanda <= menjadi >=. Oya, jangan lupa ubah pula nama variabel min menjadi max karena nantinya menjadi lucu, wong mencari nilai maksimum kok nama variabelnya min, meskipun gak pengaruh di output. Oya Satu lagi, algoritma di atas bukan satu-satunya untuk melakukan sorting. Silakan Anda cari algoritma sorting yang lain ya OK mudah-mudahan artikel ini ada manfaatnya.

Anda mungkin juga menyukai