• Tidak ada hasil yang ditemukan

Pengurutan (Sorting)

Dalam dokumen I. PEMROGRAMAN TURBO PASCAL 7.0 (Halaman 34-39)

(Untuk 3 Pertemuan)

Selain pencarian, pengurutan data merupakan salah satu permasalahan umum yang juga sering dijumpai dalam pemrograman. Sebagai bukti nyata, tinjaulah metode pencarian bagi dua di atas yang menuntut kita untuk melakukan pengurutan terlebih dahulu sebelum kita melakukan pencarian.

Dalam pemrograman, terdapat beberapa metode untuk melakukan pengurutan data.

Namun terdapat 8 (delapan) metode yang umumnya banyak digunakan, yaitu : 1. Bubble Sort

2. Maximum/Minimum Sort 3. Selection Sort

4. Insertion Sort 5. Heap Sort 6. Quick Sort 7. Merge Sort 8. Shell Sort

Pada pembahasan ini, hanya 3 (tiga) metode yang akan dibahas yaitu metode pengurutan gelembung (bubble sort), pengurutan maksimum/minimum (maximum/minium sort) dan pengurutan seleksi (selestion sort).

1. Pengurutan Gelembung (Bubble sort)

Menurut sumber yang ada, metode ini diinspirasi oleh adanya gelembung sabun yang mengapung di atas permukaan air. Hal ini tentunya disebabkan karena berat jenis gelembung sabun lebih kecil dari berat jenis air. Konsep dari fenomena tersebut kemudian diterapkan sebagai metode pengurutan data di dalam array. Dalam metode ini data dengan nilai terkecil akan diapungkan ke posisi teratas, dan sebaliknya data dengan nilai terbesar akan berada pada posisi terbawah. Sebagai contoh, asumsikan bahwa kita memiliki array A yang berisi lima buah elemen data, seperti yang tampak di bawah ini.

25 22 18 20 15

A[1] A[2] A[3] A[4] A[5]

Di sini kita akan mengurutkan array tersebut secara menaik, yaitu dengan mengapungkan nilai terkecil ke posisi teratas (paling kiri). Proses ini tentu akan dilakukan dengan menggunakan pertukaran antar elemen array. Tahapan-tahapan yang harus dilakukan adalah sebagai berikut.

Tahap 1

Mulai dari A[5] sampai A[2], lakukan perbandingan nilai antara A[k] dan A[k-1]

dimana variabel k mewakili indeks array yang sedang aktif. Apabila nilai A[k] lebih kecil, maka tukarkan nilai A[k] dengan A[k-1]. Sampai di sini, array tersebut akan menjadi seperti berikut.

15 25 22 18 20

A[1] A[2] A[3] A[4] A[5]

34 Tahap 2

Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1 sehingga array akan menjadi seperti berikut.

15 18 25 22 20

A[1] A[2] A[3] A[4] A[5]

Tahap 3

Mulai dari A[5] sampai A[4], lakukan proses seperti pada tahap 1 dan 2 sehingga array akan menjadi seperti berikut.

15 18 20 25 22

A[1] A[2] A[3] A[4] A[5]

Tahap 4

Tahap ini merupakan tahap terakhir dimana kita akan melakukan perbandingan terhadap nilai dari elemen terakhir (A5]) dengan elemen terakhir-1 (A[4]). Apabila nilai A[5] lebih kecil maka tukarkan nilainya dengan A[4] sehingga array A di atas akan terurut secara menaik seperti yang tampak di baeah ini.

15 18 20 22 25

A[1] A[2] A[3] A[4] A[5]

Pada proses yang terjadi di atas tampak jelas bahwa untuk melakukan pengurutan data dengan lima buah elemen, kita harus melakukan empat tahapan. Sekarang, apabila proses di atas kita translasikan ke dalam bahasa pascal, maka hasilnya adalah sebagai berikut.

Uses Crt;

Var n, j, k, temp : integer;

A : Array[1..100] of byte;

begin Clrscr;

Write(‘Banyaknya data yang akan diproses :’); readln(n);

For i := 1 to n do Begin

Write(‘Data ke ’,i,’ = ‘);readln(A[i]);

End;

for j:= 1 to N-1 do begin

for k:= N downto j+1 do begin

if A[k] < A[k-1] then begin

temp := A[k];

A[k] := A[k-1];

A[k-1] := temp;

End;

End;

End;

Writeln(‘Data setelah diurutkan’);

For i := 1 to n d0

Writeln(‘Data ‘,i,’ : ‘, A[i]);

End.

35 2. Pengurutan Maksimum/Minimum

Dengan metode ini, elemen array dengan nilai maksimum/minimum akan disimpan ke bagian ujung array (elemen pertama maupun terakshir). Selanjutnya nilai tersebut akan diisolasi atau diikat dan tidak diikutkan lagi dalam proses selanjutnya. Di sini, kita hanya akan menggunakan metode maksimum saja dan tidak akan membahas mengenai metode minimum. Hal ini disebabkan karena konsep yang terdapat pada metode minimum sama persis dengan metode maksimum. Untuk mempermudah pembahasan, coba perhatikan kembali array A yang terdapat pada bahasan sebelumnya.

25 22 18 20 15

A[1] A[2] A[3] A[4] A[5]

Pada bagian ini kita akan melakukan pengurutan data di dalam array tersebut dengan menggunakan metode maksimum, di mana kita akan melempar nilai maksimum ke bagian paling kanan array. Adapun tahapan-tahapan yang perlu dilalui untuk melakukan hal tersebut adalah sebagai berikut.

Tahap 1

Mulai dari A[1] sampai A[5], cari nilai maksimum dan tukarkan nilainya dengan elemen terakhir (A[5]) sehingga array akan akan berubah menjadi seperti di bawah ini.

15 22 18 20 25

A[1] A[2] A[3] A[4] A[5]

Sampai di sini, elemen terakhir (A[5]) tidak akan diikutkan lagi ke dalam proses atau tahap selanjutnya.

Tahap 2

Mulai dari A[1] sampai A[4], cari nilai maksimum dan tukarkan nilainya dengan elemen terakhir saat ini (A[4]) sehingga array akan akan berubah menjadi seperti di bawah ini.

15 20 18 2 25

A[1] A[2] A[3] A[4] A[5]

Sampai di sini, elemen ke-4 (A[4]) juga tidak akan diikutkan lagi ke dalam proses atau tahap selanjutnya.

Tahap 3

Mulai dari A[1] sampai A[3], cari nilai maksimum dan tukarkan nilainya dengan elemen terakhir saat ini (A[3]) sehingga array akan tampak seperti di bawah ini.

15 18 20 22 25

A[1] A[2] A[3] A[4] A[5]

Sampai di sini, elemen ke-3 (A[3]) juga tidak akan diikutkan lagi ke dalam proses selanjutnya.

Tahap 4

Tahap terakhir, cari nilai maksimum antara A[1] sampai A[2] dan tukarkan nilainya dengan elemen A[2]. Untuk kasus ini nilai maksimum terdapat pada A[2] sehingga di sini benarnya terjadi proses yang seharusnya tidak perlu dilakukan, yaitu menukarkan nilai A[2] dengan A[2]. Berikut ini bentuk translasi metode di atas ke dalam bahasa Pascal.

Var n, x, j, k, maks, imaks,temp : integer;

begin

x:= n;

for j:= 1 to n-1 do

36

begin

maks := A[1];

imaks := 1;

for k:= 2 to x do begin

if(A[k] > maks) then begin

maks := A[k];

imaks := k;

end;

end;

Temp := A[x];

A[x] := A[imaks];

A[imaks] := temp;

x := x – 1;

end;

end;

3. Pengurutan Seleksi

Pengurutan dengan metode seleksi ini bekerja dengan cara memilih salah satu elemen serta menganggapnya sebagai nilai terkecil. Kemudian nilai tersebut aan dibandingkan dengan elemen-elemen pada posisi berikutnya. Apabila nilai yang dipilih pertama kali lebih besar dari nilai elemen pembanding maka tukarkan kedua buah nilai tersebut.

Untuk memperjels pembahasan ini, marilah kita perhatikan kembali array A seperti pembahasan sebelumnya. Berikut gambarannya.

25 22 18 20 15

A[1] A[2] A[3] A[4] A[5]

Tahap 1

Mula-mula, A[1] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan nilai 1 ke dalam variabel, misalnya dengan nama min. Mulai dari j = min + 1 sampai n (jumlah elemen array), lakukan perbandingan antara A[j] dengan nilai A[min].

Apabila nilai dari A[min] > A[j], isikan min = j. Setelah pengulangan selesai, tukarkan nilai A[min] dan A[1]. Untuk kasus ini, nilai min adalah 5 karena nilai terkecil tersimpan pada indeks ke-5. hal tersebut akan menyebabkan array A tampak menjadi seperti berikut.

15 22 18 20 15

A[1] A[2] A[3] A[4] A[5]

Tahap 2

Mula-mula, A[2] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan nilai 2 ke dalam variabel, misalnya dengan nama min. Kemudian sama seperti di atas, lakukan pengulangan mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya.

Setelah didapatkan nilai min, maka tukarkan A[min] dengan A[2]. Untuk kasus ini, nilai minimum ditemukan pada indeks ke-3 sehingga min = 3. Tukarkan A[min]

dengan A[2] sehingga array A akan tampak seperti berikut.

15 18 22 20 25

A[1] A[2] A[3] A[4] A[5]

Tahap 3

Mula-mula, A[3] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan nilai 3 ke dalam variabel min. Kemudian sama seperti di atas, lakukan pengulangan

37

mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan nilai min, maka tukarkan A[min] dengan A[3]. Untuk kasus ini, nilai minimum ditemukan pada indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4]

sehingga array A akan tampak seperti berikut.

15 18 20 22 25

A[1] A[2] A[3] A[4] A[5]

Tahap 4

Mula-mula, A[4] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan nilai 4 ke dalam variabel min. Kemudian sama seperti di atas, lakukan pengulangan mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan nilai min, maka tukarkan A[min] dengan A[4]. Untuk kasus ini, nilai minimum ditemukan pada indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4]

sehingga array A akan tampak seperti berikut.

15 18 20 22 25

A[1] A[2] A[3] A[4] A[5]

Soal I

1. Buatlah program untuk menerima data mahasiswa yang terdiri dari no induk, nama, alamat, kelas, telepon. Urutkan data siswa tersebut berdasarkan nama dengan metode gelembung.

Soal II

2. Buatlah program untuk menerima data mahasiswa yang terdiri dari no induk, nama, alamat, kelas, telepon. Urutkan data siswa tersebut berdasarkan No Induk dengan metode maximum.

Soal III

3. Buatlah program untuk menerima data mahasiswa yang terdiri dari no induk, nama, alamat, kelas, telepon. Urutkan data siswa tersebut berdasarkan kelas dengan metode seleksi.

38

Dalam dokumen I. PEMROGRAMAN TURBO PASCAL 7.0 (Halaman 34-39)

Dokumen terkait