• Tidak ada hasil yang ditemukan

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)"

Copied!
53
0
0

Teks penuh

(1)

Algoritma dan Struktur Data

Algoritma Pengurutan

(Sorting)

(2)

Tujuan Instruksional

 Memahami algoritma pengurutan

(3)

Topik

 Algoritma pengurutan  Bubble sort  Selection sort  Insertion sort merge sort  merge sort

(4)

Sorting (Pengurutan)

 Sorting merupakan suatu proses (operasi) yang

mengurutkan data dalam suatu urutan yang dikehendaki.

 Pengurutan dapat dilakukan secara ascending (urut naik)

(5)

Contoh :

 Misal suatu kumpulan DATA berisi 8 elemen :

DATA : 77, 33, 44, 11, 88, 22, 66, 55

Setelah diurutkan :

Ascending : 11 22 33 44 55 66 77 88

Ascending : 11 22 33 44 55 66 77 88

(6)

Algoritma Pengurutan

 Ada banyak metode yang digunakan untuk melakukan

pengurutan.

 Algoritma yang dapat digunakan antara lain :

1. Bubble Sort 2. Selection Sort 2. Selection Sort 3. Insertion Sort

(7)

Bubble Sort

 Metode sorting termudah

 Cara pengurutannya : bandingkan dua data kemudian swap.  Diberi nama “Bubble” karena proses pengurutan secara

berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung.

(8)

Bubble Sort

 Bubble Sort mengurutkan data dengan cara membandingkan

elemen sekarang dengan elemen berikutnya.

 Ascending : Jika elemen sekarang lebih besar dari elemen

berikutnya maka kedua elemen tersebut ditukar/swap.

 Descending : Jika elemen sekarang lebih kecil dari elemen  Descending : Jika elemen sekarang lebih kecil dari elemen

(9)
(10)
(11)
(12)
(13)

Algoritma Bubble Sort

(tanpa flag)

for (i=0; i < n-1; i++){

for (j=n-1; j > i; j--) { if (X[j] < X[j-1]) { tmp = X[j]; X[j] = X[j-1]; SWAP X[j] = X[j-1]; X[j-1] = tmp; } } }

(14)

Time Complexity (Bubble)

 Proses swap

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

best case : T(n) = 0

 Proses perbandingan

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

(15)

Algoritma Bubble Sort

(dengan flag)

for (i=0; i < n-1 && status; i++){ status = false; for (j=n-1; j > i; j--) { if (X[j] < X[j-1]) { tmp = X[j]; SWAP

Flag

tmp = X[j]; X[j] = X[j-1]; X[j-1] = tmp; status = true; } } }

(16)

Time Complexity (Bubble)

 Proses swap

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

best case : T(n) = 0

 Proses perbandingan

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

(17)

Latihan

 Urutkan data berikut dengan bubble sort :

2, 10, 3, 1, 17, 25, 16, 9, 18

 Buatlah ilustrasi proses pengurutannya secara ascending

maupun descending! maupun descending!

(18)

Selection Sort

 Cara pengurutannya : seleksi data yang ada kemudian

dilakukan swap (pertukaran posisi).

 Pada Ascending : seleksi data terkecil kemudian swap.  Pada descending : seleksi data terbesar kemudian swap.

(19)
(20)
(21)
(22)
(23)

Algoritma Selection Sort (Ascending)

1.

Tampung data ke-i

2.

Seleksi data terkecil

3.

Cek apakah data yang ditampung lebih besar dari data

hasil seleksi (data terkecil).

4.

Jika pengecekan langkah 3 bernilai “true” : lakukan

pertukaran posisi antara data yang ditampung dengan

data terkecil.

5.

Ulangi langkah 1 sampai 4, hingga nilai i sama dengan

(24)

Selection Sort (Ascending)

 Misalkan sekumpulan data disimpan pada A[8] dengan urutan awal =

7 3 4 1 8 2 6 5

 M = data terkecil sementara, K = data terkecil (hasil seleksi)

Proses Swap A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7]

Data awal 7 3 4 1 8 2 6 5 1 m=A[0], k = 1 7 3 4 1 8 2 6 5 2 m=A[1], k = 2 1 3 4 7 8 2 6 5

1

 Hasil : 1 2 3 4 5 6 7 8 (data telah terurut secara ascending)

2 m=A[1], k = 2 1 3 4 7 8 2 6 5 3 M=A[2], k = 3 1 2 4 7 8 3 6 5 4 m=A[3], k = 4 1 2 3 7 8 4 6 5 5 m=A[4], k = 5 1 2 3 4 8 7 6 5 6 m=A[5], k = 6 1 2 3 4 5 7 6 8 7 m=A[6], k = 7 1 2 3 4 5 6 7 8 2 3 4 5 6 7

(25)

Pseudocode Selection Sort (ascending)

for (i=0; i < n-1; i++) { min = i;

for (j = i+1; j < n; j++) {

if (X[min] > X[j]) min = j; }

Cari elemen terkecil dari unsorted list.

} t = X[min]; X[min] = X[i]; X[i] = t; } } SWAP

(26)

Time Complexity (Selection)

 Proses swap

worst case : T(n) = n = O(n) best case : T(n) = n = O(n)

 Proses perbandingan

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

(27)

Effisiensi Selection Sort

for (i=0; i < n-1; i++) { min = i; for (j = i+1; j < n; j++) { if (X[min] > X[j]) min = j; }} if (min != i) { t = X[min]; X[min] = X[i]; X[i] = t; } }

Pengecekkan min untuk memaksimalkan proses swap

(28)

Time Complexity (Selection)

 Proses swap

worst case : T(n) = n/2 = O(n) best case : T(n) = 0

(29)

Latihan

 Urutkan data berikut dengan selection sort :

2, 10, 3, 1, 17, 25, 16, 9, 18

 Buatlah ilustrasi proses pengurutannya secara ascending

maupun descending! maupun descending!

(30)

Insertion Sort

 Cara pengurutannya : dimulai dari data ke-2 sampai

dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya.

 Ascending : ketika perbandingan ambil data yang paling kecil.  Descending : ketika perbandingan ambil data yang paling

 Descending : ketika perbandingan ambil data yang paling

(31)

Algoritma Insertion Sort (Ascending)

1.

Ambil satu data ke-i simpan di temp

2.

Bandingkan data temp dengan data yang ada disebelah

kiri satu per-satu

3.

Cek apakah data temp lebih kecil dari data sebelah kiri.

4.

Jika langkah nomor 3 bernilai “true” : lakukan

pergeseran data satu-persatu kemudian pada posisi

yang tepat sisipkan data temp.

(32)

Insertion Sort (Ascending)

 Misalkan sekumpulan data disimpan pada A[8] dengan urutan awal =

7 3 4 1 8 2 6 5

 temp = variabel penampung

Proses Tampung A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7]

Data awal 7 3 4 1 8 2 6 5 1 temp = A[1] 3 7 4 1 8 2 6 5 2 temp = A[2] 3 4 7 1 8 2 6 5

 Hasil : 1 2 3 4 5 6 7 8 (data telah terurut secara ascending)

2 temp = A[2] 3 4 7 1 8 2 6 5 3 temp = A[3] 1 3 4 7 8 2 6 5 4 temp = A[4] 1 3 4 7 8 2 6 5 5 temp = A[5] 1 2 3 4 7 8 6 5 6 temp = A[6] 1 2 3 4 6 7 8 5 7 temp = A[7] 1 2 3 4 5 6 7 8

(33)
(34)
(35)
(36)

Algoritma Insertion Sort

for(i=1;i<n;i++){ t=X[i]; for (j =i-1; j >= 0; j--) { if (t < X[j]){ X[j+1] = X[j]; X[j]=t; Pergeseran data Ambil data pertama X[j]=t; } else { X[j+1] = t; break; } } }

(37)

Time Complexity

 Proses pergeseran (copy)

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

best case : T(n) = 0

 Proses perbandingan

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

worst case : T(n) = n(n-1)/2 = (n2 –n) /2 = O(n2)

(38)

Latihan

 Urutkan data berikut dengan insertion sort :

2, 10, 3, 1, 17, 25, 16, 9, 18

 Buatlah ilustrasi proses pengurutannya secara ascending

maupun descending! maupun descending!

(39)

Merge Sort

 Cara pengurutannya : memecah proses menjadi sub-proses.

Bagi dua deret data, bandingkan, kemudian gabungkan (begitu seterusnya sampai selesai).

(40)

Merge Sort (Merging)



Permasalahan utama dipecah menjadi sub-masalah,

kemudian solusi dari sub-masalah akan membimbing

menuju solusi permasalahan utama.



Mengimplementasikan konsep rekursi.



Proses rekursi berhenti jika mencapai elemen dasar. Hal



Proses rekursi berhenti jika mencapai elemen dasar. Hal

ini terjadi bilamana bagian yang akan diurutkan

menyisakan tepat satu elemen. Sisa pengurutan satu

elemen tersebut menandakan bahwa bagian tersebut

telah terurut sesuai rangkaian.

(41)

Contoh : Merge Sort

 Array A berisi 6 elemen sbb :

15 12 45 56 13 10

 Masing-masing proses dalam algoritma merge sort akan

dimulai dari elemen awal dalam A dan menggabungkan dimulai dari elemen awal dalam A dan menggabungkan (merge) pasangan subarray yang terurut.

(42)
(43)
(44)
(45)
(46)
(47)
(48)
(49)
(50)

Algoritma Merge Sort

static void mergeSort(int l,int r) { if(l==r) return; else{ int mid = (l+r)/2; int mid = (l+r)/2; mergeSort(l, mid); mergeSort(mid+1,r); Merging(l,mid+1,r); } }

(51)

Algoritma Merging

static void Merging(int kiri,int tengah, int kanan) {

int j=0;

int batasBawah = kiri; int mid = tengah-1;

int n=kanan-batasBawah+1;

int tampung[] = new int[X.length];

while(kiri <=mid && tengah <= kanan){ if(X[kiri] < X[tengah]) if(X[kiri] < X[tengah]) tampung[j++]=X[kiri++]; else tampung[j++]=X[tengah++]; } while(kiri<=mid) tampung[j++]=X[kiri++]; while(tengah<=kanan) tampung[j++]=X[tengah++]; for(int i=0;i<n;i++) { X[batasBawah+i]=tampung[i]; } }

(52)

Latihan

 Urutkan data berikut dengan merge sort :

2, 10, 3, 1, 17, 25, 16, 9, 18

 Buatlah ilustrasi proses pengurutannya secara ascending

maupun descending! maupun descending!

(53)

Pustaka



Sartaj Sahni , “Data Structures & Algorithms”,

Presentation L20-24.



Mitchell Waite, “Data Structures & Algorithms in Java”,

Gambar

Ilustrasi Bubble Sort (1)
Ilustrasi Bubble Sort (2)
Ilustrasi Bubble Sort (3)
Ilustrasi Bubble Sort (4)
+7

Referensi

Dokumen terkait

Pendidikan Kecakapan Hidup (PKH) bagi Lembaga Kursus dan Pelatihan dan satuan pendidikan lainnya adalah program yang diselenggarakan oleh Lembaga Kursus dan Pelatihan maupun

Kenyataan ini barangkali cukup sebagai pertimbangan untuk menyatakan bahwa praktik kawin lari Sasak tersebut dari perspektif hukum Islam berpotensi tidak baik dan

Jadi dapat disimpulkan bahwa tendangan ke arah badan mempunyai probabilitas yang signifikan terhadap peluang poin pada saat pertandingan cabang olahraga

Tujuan penelitian ini adalah untuk mengetahui efek pemberian air leri, volume penambahan yang optimal dan interval waktu pemberian untuk pertumbuhan dan hasil jamur tiram

Berdasarkan hasil pengujian yang dilakukan pada sistem deteksi dan klasifikasi pola tinggi dan berat badan melalui citra digital ini, didapatkan kesimpulan sebagai

bahwa berdasarkan hasil merger Perusahaan Daerah Bank Perkreditan Rakyat di Daerah Kabupaten Bekasi, Daerah Kabupaten Majalengka, Daerah Kabupaten Ciamis, dan Daerah

Metode yang digunakan sebagai pengumpulan data dalam penelitian ini adalah metode simak yaitu dengan cara menyimak penggunaan bahasa dengan cara mencari data-data

Di dalam hubungan antara hukum dengan perilaku sosial, terdapat adanya unsur pervasive socialli (penyerapan sosial), artinya kepatuhan dan ketidakpatuhan terhadap hukum