6 Algoritma Pengurutan Data

Post on 20-Jul-2015

93 views 2 download

Transcript of 6 Algoritma Pengurutan Data

Sorting Data

Jurusan Teknik Elektro

Universitas Atma Jaya Makassar

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

Algoritma Sorting

1. Buble Sort

2. Selection Sort

Insertion Sort

3

3. Insertion Sort

4. Quick Sort

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.

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.

6

Langkah 2 :

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

7

8

9

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;

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

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.

13

14

15

Untuk descending lakukan proses

yang sama dengan mengambil data

yang lebih besar dan posisinya.

Penggalan listing program

Procedure Selection Sort secara

ascending

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;

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.

18

19

20

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

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.

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.

• 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

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

26

Proses yang sama seperti

sebelumnya dilakukan terhadap 2

buah kelompok yang baru (ditandai

dengan persegi panjang).

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.

Sekian

28