• Tidak ada hasil yang ditemukan

DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom

N/A
N/A
Protected

Academic year: 2021

Membagikan "DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom"

Copied!
28
0
0

Teks penuh

(1)

DATA SORTING

(2)

Pendahuluan

 Sorting (pengurutan) : proses mengatur sekumpulan

objek menurut urutan atau susunan tertentu

 Diberikan array L dengan n elemen yg sudah

terdefinisi elemen-elemennya.

 Urutan array tersusun secara menaik (ascending) :

L[1] ≤ L[2] ≤ … ≤ L[n]

 Urutan array tersusun secara menurun (descending) :

(3)

Pendahuluan …

 23, 27, 45, 67, 100,133

(data bertipe integer terurut naik)

 50.37, 31, 20.3, 19.5, 0.4, -3.2, -10.9

(data bertipe real terurut turun)

 „Amir‟, „Badu‟,‟Budi‟, „Eno‟,‟Rudi‟, „Zamri‟

(data bertipe string terurut naik)

 „d‟,‟e‟,‟g‟,‟i‟,‟x‟

(4)

Jenis-jenis Algoritma Pengurutan

 Bubble Sort

 Selection Sort (Maximum Sort & Minimum Sort)  Insertion Sort  Heap Sort  Shell Sort  Quick Sort  Merge Sort  Radix Sort  Tree Sort

(5)

Jenis-jenis Algoritma Pengurutan …

 Bubble Sort & Selection Sort : melakukan prinsip

pertukaran elemen dalam proses pengurutan (exchange sort)

 Radix Sort & Tree Sort : melakukan prinsip geser

dan sisip elemen dalam proses pengurutan (shift & insert sort)

(6)

Algoritma Bubble Sort

 Bubble sort (pengurutan apung) : diinspirasi oleh

gelembung sabun yang berada di atas permukaan air

 Karena berat jenis gelembung sabun lebih ringan

daripada berat jenis air, maka gelembung sabun selalu terapung di atas permukaan air

 Secara umum, benda berat akan terbenam dan benda

(7)

Algoritma Bubble Sort …

 Prinsip pengapungan :

 Jika kita menginginkan array teruurut naik, maka elemen

array yang bernilai paling kecil “diapungkan” artinya diangkat ke “atas” (ujung kiri array) melalui proses

pertukaran

 Proses pengapungan dilakukan sebanyak n-1 langkah (

1langkah = 1pass), n adalah ukuran array

 Pada akhir setiap langkah ke-i, array L[1..n] akan terdiri

dari 2 bagian :

 Terurut : L[1..i]

 Belum terurut : L[i+1..n]

(8)

 Algoritmanya (terurut naik):

Untuk setiap pass i=1,2,…,n-1,lakukan :

Mulai dari elemen k=n,n-1,…,i+1, lakukan: 1. Bandingkan L[k] dengan L[k-1]

2. Pertukarkan L[k] dengan L[k-1] jika L[k]<L[k-1]

(9)

 Rincian setiap pass sebagai berikut :  Pass 1 :

Mulai dari elemen ke-k = n,n-1,…,2, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k] dengan L[k-1]. Pada akhir langkah 1, elemen L[1] berisi harga minimum pertama

 Pass 2 :

Mulai dari elemen ke-k = n,n-1,…,3, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k] dengan L[k-1]. Pada akhir langkah 2, elemen L[1] berisi harga minimum kedua. Larik L[1..2]

terurut, sedangkan L[3..n] belum terurut

(10)

 Pass 3 :

Mulai dari elemen ke-k = n,n-1,…,4, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k]

dengan L[k-1]. Pada akhir langkah 3, elemen L[3] berisi harga minimum ketiga. Larik L[1..3] terurut, sedangkan L[4..n] belum terurut

 Pass n-1 :

Mulai dari elemen ke-k = n, bandingkan L[k] dengan

L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k] dengan L[k-1]. Pada akhir langkah n-1, elemen L[n-1] berisi harga

minimum ke-(n-1). Larik L[1..n-1] terurut, sedangkan L[n] pasti elemen terbesar sehingga L[1..n] terurut naik

(11)

 Contoh array dengan 6 elemen :

 Pass 1:

Algoritma Bubble Sort …

25 27 10 8 76 21

1 2 3 4 5 6

k elemen yg dibandingkan pertukarkan? hasil sementara k=6 L[6]<L[5]? (21 < 76?) ya 25, 27, 10, 8, 21, 76 k=5 L[5]<L[4]? (21 < 8?) tidak 25, 27, 10, 8, 21, 76 k=4 L[4]<L[3]? (8 <10?) ya 25, 27, 8, 10, 21, 76 k=3 L[3]<L[2]? (8 <27?) ya 25, 8, 27, 10, 21, 76 k=2 L[2]<L[1]? (8 <25?) ya 8, 25, 27, 10, 21, 76 8 25 27 10 21 76 1 2 3 4 5 6

(12)

 Pass 2:

Algoritma Bubble Sort …

k elemen yg dibandingkan pertukarkan? hasil sementara k=6 L[6]<L[5]? (76 < 21?) tidak 8, 25, 27, 10, 21, 76 k=5 L[5]<L[4]? (21 < 10?) tidak 8, 25, 27, 10, 21, 76 k=4 L[4]<L[3]? (10 < 27?) ya 8, 25, 10, 27, 21, 76 k=3 L[3]<L[2]? (10 < 25?) ya 8, 10, 25, 27, 21, 76 8 10 25 27 21 76 1 2 3 4 5 6

(13)

 Pass 3:

Algoritma Bubble Sort …

k elemen yg dibandingkan pertukarkan? hasil sementara k=6 L[6]<L[5]? (76 < 21?) tidak 8, 10, 25, 27, 21, 76 k=5 L[5]<L[4]? (21 < 27?) ya 8, 10, 25, 21, 27, 76 k=4 L[4]<L[3]? (21 < 25?) ya 8, 10, 21, 25, 27, 76

8 10 21 25 27 76 1 2 3 4 5 6

(14)

 Pass 4:

Algoritma Bubble Sort …

k elemen yg dibandingkan pertukarkan? hasil sementara k=6 L[6]<L[5]? (76 < 27?) tidak 8, 10, 21, 25, 27, 76 k=5 L[5]<L[4]? (27 < 25?) tidak 8, 10, 21, 25, 27, 76

8 10 21 25 27 76 1 2 3 4 5 6

(15)

 Pass 5:

 Sudah terurut:

Algoritma Bubble Sort …

k elemen yg dibandingkan pertukarkan? hasil sementara k=6 L[6]<L[5]? (76 < 27?) tidak 8, 10, 21, 25, 27, 76

8 10 21 25 27 76 1 2 3 4 5 6

8 10 21 25 27 76 1 2 3 4 5 6

(16)

program urut_bubble; uses crt;

const nmaks=1000;

var L:array[1..nmaks] of integer; n,i,k,temp:integer;

begin

clrscr;

write('Jumlah data : ');readln(n);writeln; write('Data belum terurut:');

for i:=1 to n do begin gotoxy(4*i,5);read(L[i]); end; for i:=1 to n-1 do begin

for k:=n downto i+1 do begin if L[k] < L[k-1] then begin temp:=L[k]; L[k]:=L[k-1]; L[k-1]:=temp; end; end; end;

(17)

writeln;

writeln('Data setelah pengurutan :'); for i:=1 to n do begin gotoxy(4*i,9);writeln(L[i]); end; writeln; readln; end.

(18)
(19)

Algoritma Selection Sort

 Gagasannya memilih elemen maksimum/minimum dari

array, lalu menempatkannya apda awal atau akhir array

 Selanjutnya elemen tersebut “diisolasi” dan tidak

disertakan pada proses selanjutnya.

 Proses ini diulang untuk elemen array yang tersisa  Ada 2 varian selection sort :

 Maximum selection sort : memilih elemen maksimum sebagai

basis pengurutan

 Minimum selection sort : memilih elemen minimum sebagai

(20)

Maximum selection sort

 Untuk array terurut menaik :

 Jumlah pass = n-1

 Untuk setiap pass i =1,2,…jumlah pass, lakukan :

1. Cari elemen terbesar (maks), mulai dari elemen-1 sampai n 2. Pertukarkan elemen maks dengan elemen ke-n

(21)

Maximum selection sort …

 Pass 1 :

 Cari elemen maks di dalam L[1..n]

 Pertukarkan elemen maks dengan elemen L[n]  Ukuran array yang belum terurut = n-1

 Pass 2 :

 Cari elemen maks di dalam L[1..n-1]

 Pertukarkan elemen maks dengan elemen L[n-1]  Ukuran array yang belum terurut = n-2

 Pass n-1 :

 Cari elemen maks di dalam L[1..2]

 Pertukarkan elemen maks dengan elemen L[2]  Ukuran array yang belum terurut = 1

(22)

 Contoh array dengan 6 elemen :

 Pass 1:

 Cari elemen maks di array L[1..6], diperoleh

maks=L[5]=76

 Pertukarkan maks dengan L[6], diperoleh

29 27 10 8 76 21 1 2 3 4 5 6

29 27 10 8 21 76 1 2 3 4 5 6

(23)

 Pass 2:

 Cari elemen maks di array L[1..5], diperoleh

maks=L[1]=29

 Pertukarkan maks dengan L[5], diperoleh

 Pass 3:

 Cari elemen maks di array L[1..4], diperoleh

maks=L[2]=27

 Pertukarkan maks dengan L[4], diperoleh

21 27 10 8 29 76 1 2 3 4 5 6

Maximum selection sort …

21 8 10 27 29 76 1 2 3 4 5 6

(24)

 Pass 4:

 Cari elemen maks di array L[1..3], diperoleh

maks=L[1]=21

 Pertukarkan maks dengan L[3], diperoleh

 Pass 5:

 Cari elemen maks di array L[1..2], diperoleh

maks=L[1]=10

 Pertukarkan maks dengan L[2], diperoleh

10 8 21 27 29 76 1 2 3 4 5 6

Maximum selection sort …

8 10 21 27 29 76 1 2 3 4 5 6

(25)

 Tinggal satu elemen L[1]=8, maka pengurutan

selesai dengan L yang terurut adalah

Maximum selection sort …

8 10 21 27 29 76 1 2 3 4 5 6

(26)

program urut_selection_max; uses crt;

const nmaks=1000;

var L:array[1..nmaks] of integer; n,i,j,imaks,temp:integer;

begin

clrscr;

write('Jumlah data : ');readln(n);writeln; write('Data belum terurut:');

for i:=1 to n do begin

gotoxy(4*i,5);read(L[i]); end;

for i:=n downto 2 do begin imaks:=1; for j:=2 to i do begin if L[j] > L[imaks] then imaks:=j; end; temp:=L[imaks]; L[imaks]:=L[i]; L[i]:=temp; end;

(27)

writeln;

writeln('Data setelah pengurutan :'); for i:=1 to n do begin gotoxy(4*i,9);writeln(L[i]); end; writeln; readln; end.

(28)

Referensi

Dokumen terkait

Hasil pengujian retensi dan penetrasi bahan pengawet boraks pada kayu tumih menunjukkan bahwa perlakuan pengeringan awal menggunakan microwave relatif lebih rendah dari

Bagi siswa, penelitian ini dapat memberikan motivasi dan semangat belajar serta semakin aktif dalam proses belajar mengajar yang mengarah kepada tercapainya tujuan

N-gain kelompok eksperimen 54 dan kontrol 42; sedangkan skor penguasaan konsep gelombang kedua kelompok itu sebesar 62,6 dan 52,5 (skala 100). Hasil penelitian disimpulkan bahwa 1)

Jika tegangan memenuhi standar yang Jika tegangan memenuhi standar yang ditetepkan, kunci kontak diputar pada posisi ditetepkan, kunci kontak diputar pada posisi

Algoritma greedy tersusun oleh beberapa elemen, yaitu himpunan kandidat (C) yang berisi elemen pembentuk solusi, himpunan solusi (S) yang berisi kandidat yang

Suruhanjaya Perkhidmatan Awam Negeri Sabah telah melantik Encik Jammy Gabriel untuk memangku jawatan Pegawai Kawalan Alam Sekitar, Gred C52 untuk tempoh mulai 3 November 2008 hingga

Dalam ilmu matematika khususnya untuk kelas 1 dan 2 sekolah dasar diajarkan pengenalan bilangan asli hingga 99 dengan menggunakan benda sekitarnya,

Variabel yang akan digunakan dalam aplikasi fuzzy decision making ini merupakan parameter yang dijadikan oleh wisatawan sebagai acuan dalam menentukan tujuan