• Tidak ada hasil yang ditemukan

Algoritma dan Struktur Data pfd

N/A
N/A
Protected

Academic year: 2018

Membagikan "Algoritma dan Struktur Data pfd"

Copied!
53
0
0

Teks penuh

(1)

Algoritma dan Struktur Data

(2)

Tujuan Instruksional

Memahami algoritma pengurutan

(3)

Topik

Algoritma pengurutan

Bubble sort

Selection sort Insertion 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

(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

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

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

(17)

Latihan

Urutkan data berikut dengan bubble sort :

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

Buatlah ilustrasi proses pengurutannya secara ascending

(18)

Selection Sort

Cara pengurutannya : seleksi data yang ada kemudian

dilakukan swap (pertukaran posisi).

(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 11 8 2 6 5

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

(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;

} }

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

(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;

} }

(28)

Time Complexity (Selection)

Proses swap

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

(29)

Latihan

Urutkan data berikut dengan selection sort :

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

Buatlah ilustrasi proses pengurutannya secara ascending

(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

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

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

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)

(38)

Latihan

Urutkan data berikut dengan insertion sort :

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

Buatlah ilustrasi proses pengurutannya secara ascending

(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

(41)

Contoh : Merge Sort

Array A berisi 6 elemen sbb :

15 12 45 56 13 10

Masing-masing proses dalam algoritma merge sort akan

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

(52)

Latihan

Urutkan data berikut dengan merge sort :

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

Buatlah ilustrasi proses pengurutannya secara ascending

(53)

Pustaka

Sartaj Sahni , “Data Structures & Algorithms”,

Presentation L20-24.

Referensi

Dokumen terkait

Sedangkan penghapusan elemen dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan.. Sifat yang demikian dikenal

Algoritma ini diawali dengan membuat array heap dengan membangun tumpukan dari kumpulan data kemudian memindahkan data dari terbesar ke bagian belakang dari sebuah tabel hasil,

Interpolation search merupakan salah satu metode pencarian yang dapat digunakan. Seperti pada binary search, data yang harus diurutkan terlebih dahulu, sebelum dapat

Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya.. Menilai

Baca karakter Ci satu persatu dan konversi karakter ke dalam kode yang dipresentasikan dalam 256 kode ASCII, kemudian dilanjutkan dengan pembacaan karakter Ki pada posisi yang sama

▫ Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan ke dalam array data Stack. ▫ Isikan data baru ke stack berdasarkan indeks top of stack yang

 Temukan node dengan nilai terbesar pada left subtree node yang dihapus kemudian pindahkan node tersebut untuk menggantikan node yang dihapus or.  Temukan node dengan

Pada matakuliah Algoritma dan Struktur Data II ini, lebih menitik beratkan pada struktur datanya, yaitu membahas macam-macam struktur data baik yang linear maupun yang