Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan...

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

Transcript of Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan...

Page 1: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

DATA SORTING

Altien Jonathan Rindengan, S.Si, M.Kom

Page 2: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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) :

L[1] ≥ L[2] ≥ … ≥ L[n]

Page 3: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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‟

(data bertipe karakter terurut naik)

Page 4: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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

Page 5: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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)

Heap Sort & Tree Sort, memerlukan konsep tree

Page 6: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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

ringan akan terapung

Page 7: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

Algoritma Bubble Sort …

Prinsip pengapungan :

Jika kita menginginkan array teruurut naik, maka elemenarray yang bernilai paling kecil “diapungkan” artinyadiangkat ke “atas” (ujung kiri array) melalui prosespertukaran

Proses pengapungan dilakukan sebanyak n-1 langkah ( 1langkah = 1pass), n adalah ukuran array

Pada akhir setiap langkah ke-i, array L[1..n] akan terdiridari 2 bagian :

Terurut : L[1..i]

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

Langkah terakhir diperoleh array L[1..n] yang terurut naik

Page 8: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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]

Algoritma Bubble Sort …

Page 9: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

Rincian setiap pass sebagai berikut :

Pass 1 :

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

Pass 2 :

Mulai dari elemen ke-k = n,n-1,…,3, bandingkanL[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkanL[k] dengan L[k-1]. Pada akhir langkah 2, elemenL[1] berisi harga minimum kedua. Larik L[1..2] terurut, sedangkan L[3..n] belum terurut

Algoritma Bubble Sort …

Page 10: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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] denganL[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 hargaminimum ke-(n-1). Larik L[1..n-1] terurut, sedangkan L[n] pasti elemen terbesar sehingga L[1..n] terurut naik

Algoritma Bubble Sort …

Page 11: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

Contoh array dengan 6 elemen :

Pass 1:

Algoritma Bubble Sort …

25 27 10 8 76 211 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 761 2 3 4 5 6

Page 12: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 761 2 3 4 5 6

Page 13: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 761 2 3 4 5 6

Page 14: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 761 2 3 4 5 6

Page 15: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 761 2 3 4 5 6

8 10 21 25 27 761 2 3 4 5 6

Page 16: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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;

Page 17: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

writeln;

writeln('Data setelah pengurutan :');

for i:=1 to n do

begin

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

end;

writeln;

readln;

end.

Page 18: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil
Page 19: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

Algoritma Selection Sort

Gagasannya memilih elemen maksimum/minimum dariarray, lalu menempatkannya apda awal atau akhirarray

Selanjutnya elemen tersebut “diisolasi” dan tidakdisertakan pada proses selanjutnya.

Proses ini diulang untuk elemen array yang tersisa

Ada 2 varian selection sort :

Maximum selection sort : memilih elemen maksimum sebagaibasis pengurutan

Minimum selection sort : memilih elemen minimum sebagaibasis pengurutan

Page 20: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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

3. Kurangi n satu (karena elemen ke-n sudah terurut)

Page 21: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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

Page 22: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 211 2 3 4 5 6

29 27 10 8 21 761 2 3 4 5 6

Maximum selection sort …

Page 23: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 761 2 3 4 5 6

Maximum selection sort …

21 8 10 27 29 761 2 3 4 5 6

Page 24: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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 761 2 3 4 5 6

Maximum selection sort …

8 10 21 27 29 761 2 3 4 5 6

Page 25: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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

selesai dengan L yang terurut adalah

Maximum selection sort …

8 10 21 27 29 761 2 3 4 5 6

Page 26: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

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;

Page 27: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil

writeln;

writeln('Data setelah pengurutan :');

for i:=1 to n do

begin

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

end;

writeln;

readln;

end.

Page 28: Algoritma pengurutan (sorting algorithm) · PDF fileAlgoritma Bubble Sort Prinsip pengapungan : Jika kita menginginkan array teruurut naik, maka elemen array yang bernilai paling kecil