6 Algoritma Pengurutan Data

28
Sorting Data Jurusan Teknik Elektro Universitas Atma Jaya Makassar

Transcript of 6 Algoritma Pengurutan Data

Page 1: 6 Algoritma Pengurutan Data

Sorting Data

Jurusan Teknik Elektro

Universitas Atma Jaya Makassar

Page 2: 6 Algoritma Pengurutan Data

Definisi SortingSorting adalah proses pengurutan data yangsebelumnya disusun secara acak sehinggamenjadi tersusun secara teratur menurut suatuaturan tertentu.

Pada umumnya terdapat 2 jenis pengurutan :

1. Ascending (Naik)1. Ascending (Naik)

2. Descending (Turun)

Contoh :

Data Acak : 5 6 8 1 3 25 10

Terurut Ascending : 1 3 5 6 8 10 25

Terurut Descending : 25 10 8 6 5 3 1

2

Page 3: 6 Algoritma Pengurutan Data

Algoritma Sorting

1. Buble Sort

2. Selection Sort

Insertion Sort

3

3. Insertion Sort

4. Quick Sort

Page 4: 6 Algoritma Pengurutan Data

Bubble Sort

Cara Ascending :

Membandingkan Data pertama denganData yang berikutnya, jika Datapertama > Data berikutnya, maka

4

Data yang berikutnya, jika Datapertama > Data berikutnya, makalakukan penukaran posisi. Datapertama dapat diambil dari data awalatau data akhir.

Page 5: 6 Algoritma Pengurutan Data

Proses : Langkah I

� Misalnya, Data pertama diambil dari

data yang paling akhir.

� Bandingkan Data paling akhir dengan

data di depannya, jika Data Akhir

5

data di depannya, jika Data Akhir

lebih kecil maka tukar posisi.

� Ulangi proses yang sama terhadap

data selanjutnya sampai dengan data

yang paling awal.

Page 6: 6 Algoritma Pengurutan Data

6

Page 7: 6 Algoritma Pengurutan Data

Langkah 2 :

Ulangi Langkah I untuk data berikutnya denganlangkah seperti pada gambar di bawah ini.

7

Page 8: 6 Algoritma Pengurutan Data

8

Page 9: 6 Algoritma Pengurutan Data

9

Page 10: 6 Algoritma Pengurutan Data

Kode Program

Procedure TukarData

Procedure TukarData(var a,b : word);

Var c : word;

10

Var c : word;

Begin

c:=a; a:=b; b:=c;

end;

Page 11: 6 Algoritma Pengurutan Data

Procedure Bubble Sort Ascending

Procedure Asc_Bubble(var data:array; jmldata:integer);

Var i,j : integer;

Begin

For i:= 2 to jmldata do

For j:= jmldata downto I do

If data[j] < data[j-1] then

11

If data[j] < data[j-1] then

Tukardata (data[j], data[j-1]);

end;

� Untuk pengurutan secara descending hanyamenggantikan baris ke-6 denganpernyataan :

If data[j] > data[j-1] then

Page 12: 6 Algoritma Pengurutan Data

Selection Sort

Proses seleksi Ascending :

� Membandingkan data yang pertama

dengan data yang berikutnya.

� Jika ditemukan data lain yang lebih kecil

dari data yg pertama maka catat

12

dari data yg pertama maka catat

posisinya.

� Bandingkan data terkecil dengan data

berikutnya.

� Demikian seterusnya hingga selesai.

� Kemudian tukar posisi bilangan pertama

dengan posisi bilangan terkecil.

Page 13: 6 Algoritma Pengurutan Data

13

Page 14: 6 Algoritma Pengurutan Data

14

Page 15: 6 Algoritma Pengurutan Data

15

Untuk descending lakukan proses

yang sama dengan mengambil data

yang lebih besar dan posisinya.

Penggalan listing program

Procedure Selection Sort secara

ascending

Page 16: 6 Algoritma Pengurutan Data

Procedure Selection Sort Ascending

Procedure Asc_Selection;

Var min, pos : byte;

Begin

For i:= 1 to max-1 do

Begin

Pos:=i;

For j:= i+1 to max do

If data[j] < data[pos] then pos:=j;

If i <> pos then tukardata(data[i],data[pos]);

16

If i <> pos then tukardata(data[i],data[pos]);

end;

end;

� Untuk pengurutan secara desending, ganti baris ke-8 dengan pernyataan :

if data[pos] < data[j] then pos:=j;

Page 17: 6 Algoritma Pengurutan Data

Insertion Sort

Ascending :

� Pengurutan dilakukan dengan cara

membandingkan data I dengan data

berikutnya (dimana data I dimulai dari

17

berikutnya (dimana data I dimulai dari

data ke-2 sampai dengan data

terakhir).

� Jika ditemukan data yang lebih kecil

dari data I, maka data tersebut

disisipkan ke depan sesuai posisi yang

seharusnya.

Page 18: 6 Algoritma Pengurutan Data

18

Page 19: 6 Algoritma Pengurutan Data

19

Page 20: 6 Algoritma Pengurutan Data

20

Page 21: 6 Algoritma Pengurutan Data

For i := 2 to max doBeginTemp :=data[i];j := i-1;while (data[j] > temp) and (j>0) do

begindata[j+1] := data[j];dec(j);

end;data[j+1]:=temp;

21

data[j+1]:=temp;end;

end;

Untuk pengurutan secara descending, ganti baris ke 8 dengan pernyataan :

While(data[j]<temp)and(j>0)do

Page 22: 6 Algoritma Pengurutan Data

QUICK SORT

Tentukan sebuah data tengah (disebutpivot = data pusat) kemudian bandingkandengan data yang ada di sisi kiri dankanan pivot.

Untuk Ascending :

22

Untuk Ascending :

� Cari posisi data di kiri yang >=pivot dancari posisi data di kanan yang <pivot.

� Tukar data yang berada pada posisi dikiri dan kanan pivot yang ditemukan.

� Ulangi langkah di atas hingga selesai.

Page 23: 6 Algoritma Pengurutan Data

Proses :

� Bilangan yang di dalam lingkaran

23

� Bilangan yang di dalam lingkaranmerupakan pivot = 15

� Terbentuk 2 kelompok data di kiri pivot dandi kanan pivot.

� i bergerak dari sudut kiri ke kanan sampaimendapatkan nilai yang >= pivot.

� j bergerak dari sudut kanan ke kiri sampaimenemukan nilai yang < pivot.

Page 24: 6 Algoritma Pengurutan Data

• i berhenti pada index ke-1 karena

langsung mendapatkan nilai yang

> dari pivot (15).

• j Berhenti pada index ke-6 karena

juga langsung mendapatkan nilai

yang < dari pivot.

24

yang < dari pivot.

• Karena i < j maka data yang

ditunjuk oleh i ditukar dengan

data yang ditunjuk oleh j

sehingga menjadi :

2 10 15 3 8 22

Page 25: 6 Algoritma Pengurutan Data

25

� i berhenti pada index ke-3 (pivot) karena tidakmenemukan bilangan yang > dari pivot.

� j berhenti pada index k-5 menunjuk pada nilai yang < daripivot.

� Karena i < j maka data yang ditunjuk oleh i (pivot) ditukardengan data yang ditunjuk oleh j sehingga menjadi :

2 10 8 3 15 22

Page 26: 6 Algoritma Pengurutan Data

26

Proses yang sama seperti

sebelumnya dilakukan terhadap 2

buah kelompok yang baru (ditandai

dengan persegi panjang).

Page 27: 6 Algoritma Pengurutan Data

TUGASBuatlah Program dengan mengguna kan proseduratau fungsi :

1. Buble Sort

2. Selection Sort

3. Insertion Sort

4. Quick Sort

27

4. Quick Sort

Nomor Genap : 1 dan 4

Nomor Ganjil : 2 dan 3

Hasilnya diprint dan kumpulkan minggu depan.

Nama tidak boleh ditulis tangan, harus diprint.

Page 28: 6 Algoritma Pengurutan Data

Sekian

28