• Tidak ada hasil yang ditemukan

Altien Jonathan Rindengan, S.Si, M.Kom

N/A
N/A
Protected

Academic year: 2018

Membagikan "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]

(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

(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

(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

(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

(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

(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

(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

(17)

writeln;

writeln('Data setelah pengurutan :'); for i:=1 to n do

begin

gotoxy(4*i,9);writeln(L[i]); 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]

(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

(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

(25)

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

selesai dengan L yang terurut adalah

Maximum selection sort …

8 10 21 27 29 76

(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:');

(27)

writeln;

writeln('Data setelah pengurutan :'); for i:=1 to n do

begin

gotoxy(4*i,9);writeln(L[i]); end;

(28)

Referensi

Dokumen terkait

Penulisan tugas akhir karya seni ini bertujuan untuk mendeskripsikan cirikhas masing – masing tokoh Pandawa serta mendeskripsikan proses pembuatan karya seni lukis dengan

Demikian juga halnya dalam proses pembelajaran PAK guru dapat menggunakan model pembelajaran picture and picture yang didesain dengan menggunakan bahan utama adalah

Adapun fungsi-fungsi dari setiap rangkaian, seperti rangkaian Minimum Sistem Mikrokontroller ATMega 16 di gunakan sebagai control otak dari input menuju output yang

Ebben a DNP tagok mellett más (keresztény) pártok szimpatizánsainak adatait is rögzítették. Az MSZMP Politikai Bizottságának 1957. júniusi határozata 35

Demikian surat pernyataan ini dibuat dengan sebenarnya untuk dapat digunakan sebagai bukti pemenuhan syarat pengajuan pasangan calon Kepala Daerah dan Wakil

Pesantren sebagai lembaga pendidikan yang selama ini dipahami sebagai garda terdepan dalam upaya tafaqquh fiddin, akhir-akhir ini ikut hadir sebagai pencetus ide pemerkuat ekonomi

Berdasarkan nilai puncak maksimum ini diperoleh nilai margin penguatan dan nilai margin fasa dari tanggapan tegangan sistem eksitasi generator tanpa dan

Oleh karena itu, untuk mencegah penyakit HDB perlu dilakukan penyediaan benih yang bebas Xoo serta pemahaman mengenai waktu tanam yang sesuai dengan perkembangan penyakit Xoo