sort (pengurutan)

29
M. Ajir Muzakki, S.Si

Upload: tosca

Post on 19-Jan-2016

135 views

Category:

Documents


12 download

DESCRIPTION

SORT (pengurutan). M. Ajir Muzakki, S.Si. Pengertian :. Sort adalah proses pengurutan data yang tersusun secara acak menjadi data yang tersusun secara teratur menurut aturan tertentu. Urutan data dapat berbentuk Ancending (naik) atau Descending(turun). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SORT (pengurutan)

M. Ajir Muzakki, S.Si

Page 2: SORT (pengurutan)

Pengertian :

Sort adalah proses pengurutan data yang tersusun secara acak menjadi data yang tersusun secara teratur menurut aturan tertentu.

Urutan data dapat berbentuk Ancending (naik) atau Descending(turun).

Page 3: SORT (pengurutan)

• Bila N obyek disimpan dalam larik L, maka pengurutan menaik berarti menyusun elemen larik sedemikian sehingga:L[1] ≤ L[2] ≤ L[3] ≤ … ≤ L[N]

• Sedangkan pengurutan menurun berarti menyusun elemen larik sedemikian sehingga:L[1] ≥ L[2] ≥ L[3] ≥ … ≥ L[N]

Page 4: SORT (pengurutan)

• Data yang diurut dapat berupa data bertipe numerik dasar atau tipe bentuk. Jika data bertipe bentukan (rekaman), maka harus dijelaskan berdasarkan field apa data tersebut diurutkan.

• Contoh:(i) 23, 27, 45, 67 (data integer terurut menaik)(ii) 25.12, 20.19,-12.20 (data riil terurut menurun)(iii) Amir, Badu, Budi, Dudi (data string terurut

manaik)(iv) <08053110001, Eko, A>, < 08053110011,

Reza, C>, <08053110012, Sam, E> (data mahasiswa terurut menaik berdasarkan field NIM

Page 5: SORT (pengurutan)

Keuntungan Data Terurut

• Mempercepat pencarian;• Mudah menentukan data maksimum /

minimum.

Page 6: SORT (pengurutan)

Pengurutan Terbagi Dua Kelompok:

• Pengurutan Internal adalah pengurutan terhadap sekumpulan data yang disimpan di dalam memori utama komputer. Umumnya struktur data yang dipakai adalah larik, sehingga pengurutan internal disebut juga pengurutan larik.

• Pengurutan Eksternal adalah pengurutan data yang disimpan di dalam memori sekunder, biasanya data bervolume besar sehingga tidak mampu dimuat semuanya dalam memori komputer, disebut juga pengurutan arsip (file), karena struktur eksternal yang dipakai adalah arsip.

Page 7: SORT (pengurutan)

Metode Pengurutan Data1. Bubble/Exchange Sort2. Selection Sort(Maximum/Minimum Sort )

3. Insertion Sort4. Quick Sort5. Heap Sort; 6. Merge Sort;7. Radix Sort;8. Tree Sort, dan lain-lain.

Page 8: SORT (pengurutan)

Metode pengurutan gelembung diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan.

Metode ini dilakukan dengan cara membandingkan elemen yang sekarang dengan yang berikutnya, jika elemen berikutnya lebih kecil maka elemen ditukar

Page 9: SORT (pengurutan)

Algoritma Pengurutan Gelembung

Untuk mendapatkan larik yang terurut menaik, proses yang dilakukan pada setiap langkah sebagai berikut:

Langkah 1: Mulai elemen 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.

Langkah 2: Mulai elemen 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[2] berisi harga minimum kedua dan larik L[1..2] terurut.

Langkah N-1: Mulai elemen 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) dan larik L[1..N-1] terurut menaik, sehingga elemen yang tersisa adalah L[N] yang tidak perlu lagi diurutkan karena hanya satusatunya.

Page 10: SORT (pengurutan)

procedure UrutGelembung(input/output L: Larik; input N : integer)

I : integer {pencacah untuk jumlah langkah}K : integer {pencacah untuk pengapungan pada setiap langkah}Temp : integer {peubah bantu untuk pertukaran}Algoritmafor I ← 1 to N-1 do

for K ← N downto i+1 doif L[K] < L[K-1] then {pertukarkan L[K] dengan L[K-1]}

Temp ← L[K]L[K] ← L[K-1]L[K-1] ← Temp

endifendfor

endfor

Page 11: SORT (pengurutan)

Procedure TukarData (Var a,b : Word);Var c : word;

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

End;

Procedure Asc_Buble (data : array; jmldata : integer);Vari,j : integer ;

BeginFor i := 2 to jmldata doFor j := jmldata downto i do

if data[j] < data[j-1] thenTukarData (data[j],data[j-1]

End;

Sedang untuk pengurutan secara descending dilakukan dengan mengganti baris Ke-6 if data [j] > data [j-1]

Page 12: SORT (pengurutan)

22 10 15 3 8 2

2 22 10 15 3 8

22 10 15 3 2 8

22 2 10 15 3 8

22 10 2 15 3 8

22 10 15 2 3 8

Iterasi ke-1 (Langkah 1)

Iterasi ke-2 (Langkah 2)

2 22 10 15 3 8

2 22 10 15 3 8

2 3 22 10 15 8

2 22 10 3 15 8

2 22 3 10 15 8

Page 13: SORT (pengurutan)

Iterasi ke-3(Langkah 3)

2 3 22 15 15 8

2 3 22 10 8 152 3 22 8 10 15

2 3 8 22 10 15

2 3 8 22 10 152 3 8 22 10 152 3 8 10 22 15

2 3 8 10 22 15

2 3 8 10 15 22

Iterasi ke-4 (Langkah 4)

Iterasi ke-5 (Langkah 5

2 3 8 10 15 22

terurut

Page 14: SORT (pengurutan)

Selection Sort

Metode ini dilakukan dengan cara membandingkan elemen sekarang dengan elemen berikutnya,jika ditemukan elemen yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian tukar data dari posisi sekarang ke posisi yang terakhir dicatat tsb.

Page 15: SORT (pengurutan)

Procedure Asc_Selection;Var

min, pos : byte ;Begin

for i := 1 to max – 1 doBegin

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]);

End;End;

Sedang untuk pengurutan secara descending dilakukan dengan mengganti baris Ke-8if data [pos] < data [j] then pos := j;

Page 16: SORT (pengurutan)

22 10 15 3 8 2

Iterasi ke-1 (Langkah 1)

Pembanding Posisi

10 > 3 410 < 15 2

1

Posisi data ke-1 (22) = 6

Tukar data ke -1 dengan data ke-6

3 > 2 63 < 8 4

i = 1 2 3 4 5 6

2 10 15 3 8 22

22 > 10 2

Page 17: SORT (pengurutan)

Iterasi ke-2 (Langkah 2)

Pembanding Posisi

10 > 3 410 < 15 2

Posisi data ke-4 (10) = 4

Tukar data ke -2 dengan data ke-4

3 < 22 43 < 8 4

i = 1 2 3 4 5 6

2 3 15 10 8 22

2 10 15 3 8 22

Page 18: SORT (pengurutan)

Iterasi ke-3 (Langkah 3)

Pembanding Posisi15 > 10 4

Posisi data ke-3(15) = 5

Tukar data ke -3 dengan data ke-5

8 < 22 510 > 8 5

i = 1 2 3 4 5 6

2 3 8 10 15 22

2 3 15 10 8 22

Iterasi ke-4 (Langkah 4)

Pembanding Posisi

Posisi data ke-4 (10) tetap pada posisinya =4 (tidak berubah)10 < 22 410 < 15 4

i = 1 2 3 4 5 6

2 3 8 10 15 22

2 3 8 10 15 22

Page 19: SORT (pengurutan)

Iterasi ke-4 (Langkah 4)

Pembanding Posisi

Posisi data ke-5 (15) tetap pada posisinya =5 (tidak berubah)

15 > 22 5

2 3 8 10 15 22

2 3 8 10 15 22 i = 1 2 3 4 5 6

2 3 8 10 15 22

Terurut

Page 20: SORT (pengurutan)

Dilakukan dengan cara membandingkan data ke-i (di mana i dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya

Page 21: SORT (pengurutan)

Procedure Asc_Insert;Var

i, j, temp : byteBegin

For i := 2 to max do Begin

Temp := data[i];j :=i – 1;While (data[j] > temp) and (j > 0) do Begin

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

End;Data [j+1] := temp;End;

End;

Sedang untuk pengurutan secara descending dilakukan dengan mengganti baris Ke-8While (data [ j ] < temp) and (j > 0) do

Page 22: SORT (pengurutan)

22 10 15 3 8 2

Iterasi ke-1 (Langkah 1)

Temp cek Geser

Temp menempati posisi ke-1

10 Temp < 22 Data ke-1 → Posisi 2

i = 1 2 3 4 5 6

10 22 15 3 8 2

10 22 15 3 8 2

Iterasi ke-2 (Langkah 2)

Temp cek Geser

Temp menempati posisi ke-2

15 Temp < 22 Data ke-2 → Posisi 3

i = 1 2 3 4 5 6

10 15 22 3 8 2

Temp > 10

Page 23: SORT (pengurutan)

10 15 22 3 8 2

Iterasi ke-3 (Langkah 3)

Temp cek Geser

Temp menempati posisi ke-1

3 Temp < 22 Data ke-3 → Posisi 4

i = 1 2 3 4 5 6

3 10 15 22 8 2

Temp < 15 Data ke-2 → Posisi 3Temp < 10 Data ke-1 → Posisi 2

3 10 15 22 8 2

Iterasi ke-4 (Langkah 4)

Temp cek Geser

Temp menempati posisi ke-2

8 Temp < 22 Data ke-4 → Posisi 5

i = 1 2 3 4 5 6

3 8 10 15 22 2

Temp < 15 Data ke-3 → Posisi 4Temp < 10 Data ke-2 → Posisi 3Temp > 3

Page 24: SORT (pengurutan)

3 8 10 15 22 2

Iterasi ke-5 (Langkah 5)

Temp cek Geser

Temp menempati posisi ke-1

2 Temp < 22 Data ke-5 → Posisi 6

i = 1 2 3 4 5 6

2 3 8 10 15 22

Temp < 15 Data ke-4 → Posisi 5Temp < 10 Data ke-3 → Posisi 4

Temp < 3 Data ke-1 → Posisi 2Temp < 8 Data ke-2 → Posisi 3

2 3 8 10 15 22

Terurut

Page 25: SORT (pengurutan)

Dilakukan cara membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen-elemen lain yang lebih kecil dari pada pivot tersebut terletak disebelah kirinya dan elemen lain yang lebih besar dari pada pivot terletak sebelah kanannya.sehinggga terbentuk dua sublist yang terletak di sebelah kiri dan kanan pivot.

Proses :

i bergerak dari sudut kiri ke kanan sampai mendapatkan

nilai >= pivot

j bergerak dari sudut kanan kekiri sampai menemukan

nilai < pivot

Page 26: SORT (pengurutan)

22 10 15 3 8 2

Iterasi ke-1 (Langkah 1)

i = 1 2 3 4 5 6

i berhenti pada indek ke-1 karena diperoleh nilai yang lebih besar dari pivot (15)

j berhenti pada indek ke-6 karena diperoleh nilai yang lebih kecil dari pivot (15)

i j

Karena i < j maka data yang ditunjuk oleh I ditukar dengan data j sehingga menjadi

2 10 15 3 8 22

Page 27: SORT (pengurutan)

2 10 15 3 8 22

Iterasi ke-2 (Langkah 2)

i = 1 2 3 4 5 6

i berhenti pada indek ke-3 karena tidak menemukan bilangan yang lebih besar dari pivot (15)

j berhenti pada indek ke-5 karena diperoleh nilai yang lebih kecil dari pivot (15)

i j

Karena i < j maka data yang ditunjuk oleh i ditukar dengan data j sehingga menjadi

2 10 8 3 15 22

Page 28: SORT (pengurutan)

2 10 8 3 15 22

Iterasi ke-2 (Langkah 2)

i = 1 2 3 4 5 6

i berhenti pada indek ke-2 karena tidak menemukan bilangan yang lebih besar dari pivot (8)

j berhenti pada indek ke-4 karena diperoleh nilai yang lebih kecil dari pivot (8)

i j

Karena i < j maka data yang ditunjuk oleh i ditukar dengan data j sehingga menjadi

2 3 8 10 15 22

Page 29: SORT (pengurutan)

TugasTunjukan dengan Gambar cara pengurutan

sekumpulan data berikut ini secara ascending dan sampai berapa iterasi yang diperlukan ?:4 10 6 7 2 5 8

Gunakan metode : - Buble short- Quick Short