• Tidak ada hasil yang ditemukan

begin

clrscr; textcolor(12);

write(’Banyaknya Elemen Array : ‘); readln(n);

{Input Data}

for i := 1 to n do begin

write(’Elemen ke-’ ,i,’: ‘); readln(A[i]);

end;

{Cetak Array Sebelum Pengurutan}

writeln; textcolor(15); write(’Sebelum diurutkan : ‘);

for i := l to n do write(A[i],’ ‘);

writeln; textcolor(15);

writeln; writeln(’Proses Pengurutan Gravitasi : ‘);

for i := 1 to n-1 do begin for j := 1 to n-i do begin

if A[j] > A[j+1] then begin temp := A[j+1];

A[j+1] := A[j];

A[j] := temp;

end;

end;

writeln; textcolor(i);

Modul Praktikum Alogaritma II Pengurutan/Sorting

{Cetak Array tiap Iangkah pengurutan :}

write(’Hasil akhir langkah ke-’,i,’ : ‘);

for k := 1 to n do write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}

writeln; writeln; textcolor(15);

write(’Hasil Pengurutan Gravitasi : ‘);

for i := 1 to n do write(A[i],’ ‘);

writeln; writeln; textcolor(10);

write (’Sudah terurut dengan benar khan ..?‘);

readln;

end.

3. Pengurutan SELEKSI (Selection Sort) Ide Pengurutan:

Pemilihan elemen-elemen ekstrim, paling besar (maksimum) atau paling kecil (minimum), kemudian ditempatkan pada posisi yang sesuai. Langkah tersebut diulangi untuk elemen-elemen sisanya, sampai semua elemen terurut.

Berdasarkan ide tersebut maka terdapat 4 variasi dalam pengurutan seleksi ini, yaitu:

1. Pengurutan Naik : Pemilihan maksimum, ditempatkan di bagian akhir.

2. Pengurutan Naik : Pemilihan minimum, ditempatkan di bagian awal.

3. Pengurutan Turun : Pemilihan maksimum, ditempatkan di bagian awal.

4. Pengurutan Turun : Pemilihan minimum, ditempatkan di bagian akhir.

Contoh:

Urutkan naik elemen-elemen array A = [6, 9, 7, 3, 2, 4] dengan pemilihan maksimum.

Langkah 1 : 6 9 7 3 2 4 : maksimumnya 9 (elemen ke-2) ditukar dengan 4 (elemen ke-6) Hasilnya : 6 4 7 3 2 9

Langkah 2 : Elemen sisanya (yang belum terurut) : 6 4 7 3 2 6 4 7 3 2 : maksimumnya 7 (elemen ke-3)

ditukar dengan 2 (elemen ke-5)

Langkah 3 : Elemen sisanya (yang belum terurut) : 6 4 2 3 6 4 2 3 : rnaksimumnya 6 (elemen ke-l)

ditukar dengan 3 (elemen ke-4) Hasilnya : 3 4 2 6 7 9

Langkah 4 : Elemen sisanya (yang belum terurut): 3 4 2

3 4 2 : maksimumnya 4 (elemen ke-2) ditukar dengan 2 (elemen ke-3) Hasilnya : 3 2 4 6 7 9

Langkah 5 : Elemen sisanya (yang belum terurut): 3 2

3 2 : maksimumnya 3 (elemen ke-l)

ditukar dengan 2 (elemen ke-2) Hasilnya : 2 3 4 6 7 9

Pada akhir langkah ke-5 ini tinggal satu elemen yang belum diproses, tetapi karena sudah pasti menempati posisi yang sesuai maka proses tidak perlu dilanjutkan (selesai).

Algoritma : Ascending dengan memilih maksimum algoritma Selection_Sort (A, n) 1. for i ← l to n—l do

2. imaks = 1;

3. for j ← 2 to n-i+1 do

4. if A[j] > A[imaks] then imaks ← j 5. endfor

6. TUKAR(A[imaks] ,A[n-i+l) 7. endfor

Algoritma prosedur TUKA R:

8. TUKAR(,y);

9. Temp ← x; x ← y; y ← Temp;

10. end

Silahkan dibuat programnya dan modifikasilah untuk tiga variasi yang lain.

Modul Praktikum Alogaritma II Pengurutan/Sorting

Contoh Program:

program Urut_SELEKSI;

uses crt;

var i,j,k,temp,imaks,n : integer ;

A,B,C : array [1. .100] of integer;

begin

clrscr; textcolor(10);

write(’Banyaknya Elemen Array: ‘); readln(n);

{lnputData}

for i := 1 to n do begin

write(’Elemen ke-’ ,i, ’: ‘); readln(A[i]);

end;

{Cetak Array Sebelum Pengurutan)

writeln; textcolor(15); write(’Sebelum diurutkan : ‘);

for i := 1 to n do write(A[i],’ ‘);

writeln; writeln; textcolor(15);

writeln(’Proses Pengurutan Seleksi : ‘);

for i := 1 to n-1 do begin imaks := i;

for j := i+1 to n do

if A[j] < A[imaks] then imaks := j;

{Tukar A[j] dengan A[imaks]}

temp := A[imaks];

A[imaks] := A[i];

A[i] := temp;

writeln; textcolor(i);

{Cetak Array tiap langkah pengurutan:}

write (‘Hasil akhir langkah ke-’ , i ,’ : ‘);

for k := 1 to n do write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}

textcolor(15); write(’Hasil Pengurutan Seleksi : ‘);

Dari gambar di samping :

Misalkan elemen ke -1 s.d. ke-5 sudah terurut. Maka sekarang kita ilustrasi-kan langkah pengurutan untuk elemen ke-6 :

for i := 1 to n do write(A[i],’ ‘ );

readln;

end.

4. Pengurutan SISIP (Insertion Sort)

Ide Pengurutan : Ambil sembarang elemen (misal secara beruntun mulai dari elemen kedua), bandingkan dengan elemen-elemen didepannya untuk rnendapatkan posisi yang sebenarnya (posisi terurut). Jika posisi yang benar sudah diperoleh maka tempatkan elemen tersebut ke posisi yang benar tersebut.

Langkah untuk pengurutan naik :

1. Anggap elemen pertama sudah dalam kondisi terurut.

2. Mulai elemen kedua sampai elemen terakhir lakukan : 2.1. Simpan elemen tersebut dalam variabel temporary 2.2. Bandingkan dengan elemen depannya:

− Jika lebih kecil maka bandingkan lagi dengan elemen depannya lagi

− Jika Iebih besar maka lakukan pergeseran elemen-elemen dari elemen sebelum elemen tersebut sampai elemen setelah elemen yang lebih kecil itu ke kanan satu langkah, dan isilah (assign-lah) posisi yang ditinggalkan oleh elemen yang digeser tersebut yang paling kiri dengan niali variable temporary tadi.

3. Ulangi untuk elemen-elemen berikutnya sampai semua elemen terurut.

Ilustrasi,: Pengurutan naik

Elemen ke : 1 2 3 4 5 6 7 8

Setelah elemen ke-6 dibanding-bandingkan dengan elemen-elemen didepannya ternyata seharusnya elemen 6 menempati elemen 2, maka elemen 2 sampai ke-5 digeser ke kanan satu langkah, dan elemen ke-2 di isi oleh elemen ke-6.

Modul Praktikum Alogaritma II Pengurutan/Sorting

Contoh: Urutkan naik elemen-elemen array A = [6 9 7 3 2 4]

Langkah 1 : Ambil Elemen kedua

6←9 7 3 2 4 : 9 > 6 maka tidak terjadi pertukaran Hasilnya 6 9 7 3 2 4

Langkah 2 : Ambil elemen ketiga

6 9←7 3 2 4 : 7 < 9 maka terjadi pertukaran 6←7 9 3 2 4 : 7 > 6 maka tidak terjadi pertukaran Hasilnya 6 7 9 3 2 4

Langkah 3 : Ambil elemen keempat

6 7 9←3 2 4 : 3 < 9 maka terjadi pertukaran 6 7←3 9 2 4 : 3 < 7 maka terjadi pertukaran 6←3 7 9 2 4 : 3 < 6 maka terjadi pertukaran Hasilnya 3 6 7 9 2 4

Langkah 4 : Ambil elemen kelima

3 6 7 9←2 4 : 2 < 9 maka terjadi pertukaran 3 6 7←2 9 4 : 2 < 7 maka terjadi pertukaran 3 6←2 7 9 4 : 2 < 6 maka terjadi pertukaran 3←2 6 7 9 4 : 2 < 3 maka terjadi pertukaran Hasilnya 2 3 6 7 9 4

Langkah 5 : Ambil eleman keenam

2 3 6 7 9←4 : 4 < 9 maka terjadi pertukaran 2 3 6 7←4 9 : 4 < 7 maka terjadi pertukaran 2 3 6←4 7 9 : 4 < 6 maka terjadi pertukaran 2 3←4 6 7 9 : 4 > 3 maka tidak terjadi pertukaran

Hasilnya 2 3 4 6 7 9

Algoritma : Ascending

algoritma Insertion_Sort (A, n) 1. for i ← 2 to n do

2. temp ← A[i]; j ← i-1;

3. while (temp < A[j]) and (j > 0) do

4. j ← j-1

5. endwhile

6. for k ← i downto j+1 do

7. A[k] ← A[k-1]

8. endfor

9. A[j+1] ← temp;

10. endfor

Pahami langkah pengurutan tersebut, coba implementasikan algoritmanya, dan modifikasi-lah untuk pengurutan menurun.

Contoh Program:

program INSERTION_SORT;

uses crt;

var i,j,k,temp,n : integer;

A,B,C : array [1. .100] of integer;

begin

clrscr; textcolor(12);

write(’Banyaknya Elemen Array : ‘); readln(n);

{Input Data}

for i := 1 to n do begin

write(’Elemen ke- ’ ,i,’: ‘) ; readln(A[i];

end;

{Cetak Array Sebelum Pengurutan}

writeln; textcolor(15);

write(’Sebelum diurutkan : ‘);

for i := l to n do write(A[i],’ ‘);

writeln; textcolor(15) ; writeln;

Modul Praktikum Alogaritma II Pengurutan/Sorting

writeln (‘Proses Pengurutan Insertion : ‘);

for i := 2 to n do begin temp := A[i);

j := i—1;

while (temp < A[j]) and (j > 0) do j := j - 1;

for k := i downto j+1 do A[k]:= A[k-1];

A[j+1]:= temp;

writeln; textcolor(i);

write(’Hasil akhir langkah ke-’ ,i-1,’ : ‘);

{Cetak Array tiap langkah pengurutan :}

for k := 1 to n do write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}

writeln; writeln; textcolor(15);

write(’Hasil Pengurutan Insertion ‘);

for i := 1 to n do write(A[i),’ ‘);

writeln; writeln; textcolor(10);

write (‘ Sudah terurut dengan benar khan ..? ‘);

readln;

end.

5. Pengurutan SISIP-TUKAR (Swap-Insertion Sort)

Ide Pengurutan: Mirip dengan pengurutan SISIP, bedanya jika posisi suatu elemen tidak dalam kondisi terurut maka langsung dilakukan pertukaran. Jadi tidak ada proses pergeseran.

Untuk pengurutan naik : Ambil sembarang elemen (misal secara beruntun mulai dari elemen kedua), bandingkan dengan elemen didepannya, jika ternyata lebih kecil maka tukarkan, dan lakukan hal yang sama dengan elemen depannya lagi, sampai diperoleh kondisi lebih besar. Ulangi untuk elemen ketiga sampai elemen terakhir.

Langkah untuk pengurutan naik :

1. Anggap elemen pertama sudah dalam kondisi terurut.

2. Mulai elemen kedua sampai elemen terakhir lakukan : 2.1. Simpan (assign) variabel indeksnya ke variabel lain.

2.2. Bandingkan elemen tersebut dengan elemen depannya (gunakan variable indeks yang baru) :

- Jika lebih kecil maka tukarkan, kemudian bandingkan lagi dengan elemen depannya lagi

- Jika lebih besar maka berhenti.

3. Ulangi untuk elemen ketiga dan seterusnya sampai semua elemen terurut

Contoh: Urutkan naik elemen-elemen array A [6, 2, 9, 3, 4, 7]

Langkah 1 : Ambil elemen kedua

6←2 9 3 4 7 : 2 < 6 maka terjadi pertukaran dan Hasilnya : 2 6 9 3 4 7 Langkah pertama selesai (sudah sampai elemen terdepan) Langkah 2 : Ambil elemen ketiga

2 6←9 3 4 7 : 9 > 6 maka tidak terjadi pertukaran dan Langkah kedua selesai, Hasilnya : 2 6 9 3 4 7 Langkah 3 : Ambil elemen keempat

2 6 9←3 4 7 : 3 < 9 maka terjadi pertukaran 2 6←3 9 4 7 : 3 < 6 maka terjadi pertukaran

2←3 6 9 4 7 : 3 > 2 maka tidak terjadi pertukaran dan Langkah ketiga selesai, Hasilnya : 2 3 6 9 4 7 Langkah 4 : Ambil elemen kelima

2 3 6 9←4 7 : 4 < 9 maka terjadi pertukaran 2 3 6←4 9 7 : 4 < 6 maka terjadi pertukaran

2 3←4 6 9 7 : 4 > 3 maka tidak terjadi pertukaran dan Langkah keempat selesai, Hasilnya : 2 3 4 6 9 7 Langkah 5 : Ambil elemen keenam

2 3 4 6 9←7 : 7 < 9 maka terjadi pertukaran

2 3 4 6←7 9 : 7 > 6 maka tidak terjadi pertukaran dan Langkah kelima selesai, Hasilnya : 2 3 4 6 7 9

Modul Praktikum Alogaritma II Pengurutan/Sorting

Algoritma : Ascending

algoritma Insertion_Swap_Sort (A, n) 1. for i ← 1 to n-1 do

Algoritma prosedur TUKAR:

8. TUKAR(x,y);

var i,j,k,temp,n : integer;

A,B,C : array [1. .100] of integer;

Dokumen terkait