algoritma struktur data€¦ · 9. wirth, niklaus, algorithmic + data structures programs,...

29
Algoritma Struktur Data 3 sks By. Sri Rezeki Candra Nursari

Upload: others

Post on 14-Nov-2020

10 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Algoritma Struktur Data3 sks

By. Sri Rezeki Candra Nursari

Page 2: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

MateriMateriPengantar Struktur Data

Abstract Data Type (ADT)

Rekursif : Fibonacci

Sorting (Selection, Insertion, Bubble, Shell, Merge, Quick)

Struktur Data Linier (Linked List, Stack, Queu)

Struktur Data Hirarki (Tree, Graph, Hash Tables)

Search (Sequential, Fibonacci, Interpolation, Binary)

Page 3: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Literatur :1. H.M Deitel, P.J Deitel, Small Java How to Program-sixth

Edition, Pearson Prentice Hall, 20052. Elliot B. Koffman, Paul A.T. Wolfgang, Objects, Abstraction,

Data Structures and Design Using Java, John Wiley & Sons.Inc, 2005

3. Mark Allen Weiss, Data Structures & Algorithm Analysis in Java, Addison-Wesley, 1999

4. Moh.Sjukani, Algoritma & Struktur Data dengan C, C++ dan Java, Mitra Wacana Media, Agustus 2005

5. Andri Kristanto, Struktur Data dengan C, Graha Ilmu, 20036. Bambang Wahyudi, Pengantar Struktur Data dan Algoritma,

Andi, 20047. Ema Utami, Struktur Data, Graha Ilmu, 20078. Yatini B, Indra, Pemrograman Terstruktur, J&J Learning

Yogyakarta, 20019. Wirth, Niklaus, Algorithmic + Data Structures Programs,

Prentice-Hall, 197610. Thompson Susabda Ngoen , Algoritma dan Struktur Data

Bahasa C, Mitra Wacana Media, 2009

ALGORITMA ALGORITMA STRUKTUR STRUKTUR DATADATA -- 33 sks sks

Page 4: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Fungsi Rekursif

• Definisi fungsi rekursif.• Contoh 1 : Faktorial• Contoh 2 : Perkalian• Contoh 3 : Fibonacci• Contoh 4 : Tower of Hanoi

Page 5: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra
Page 6: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Fungsi Rekursif

• Fungsi biasa dipanggil oleh fungsi lain. Sedangkan fungsi rekursif dipanggil oleh dirinya sendiri.

A B C D A A A A

Page 7: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Rekursif

• Rekursif berarti suatu proses yang memanggil dirinya sendiri.

• Rekursif terdiri dari prosedur atau fungsi. • Perbedaannya adalah bahwa rekursif

bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi.

Page 8: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Rekursif• Pemanggilan prosedur atau fungsi ke

dirinya sendiri bisa berarti proses yang berulang yang tidak dapat diketahui kapan akan berakhir.

• Dalam pemakaian sehari-hari, rekursi merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan menambahkan langkah-langkah sejenis.

Page 9: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Fungsi Rekursif

• Setara dengan proses looping/ iterasi faktorial, perkalian

• Kadang rekursif lebih baik dari iterasi tower of hanoi

• Terkadang sebaliknya fibonacci• Komponen :

– Way out if – else + return()– Recursive call dengan value baru

Buat 6 kelompok

Page 10: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Contoh 1: Faktorial

1! = 12! = 23! = 64! = 245! = 1206! = 7207! = 5040

Buat dengan menggunakan Class !!!

Page 11: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Algoritma.........?????Pseudocode.......??????

Page 12: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

1. Faktorial – Contoh 2ALGORITMA

n! = 1 if n == 0n! = n * ( n – 1 )! if n > 04! = 4 x 3!

3! = 3 x 2!2! = 2 x 1!

1! = 1 x 0!0! = 1

SOURCE CODE

int factorial ( int n ){

int x, y;if ( n == 0 )

return ( 1 );x = n – 1;y = factorial ( x );return ( n * y );

}

Berdasarkan cuplikan source code, 1. Buat dengan menggunakan tanpa Class !!!2. Buat dengan menggunakan Class !!!

Page 13: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra
Page 14: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

2. PerkalianALGORITMA

a * b = a if b == 1a * b = a * ( b – 1 ) + a if b > 16 x 3 = ( 6 x 2 ) + 6

= ( 6 x 1 ) + 6 + 6= 6 + 6 + 6= 18

SOURCE CODE

int mult ( int a, int b ){

int c, d, sum;if ( b == 1 ) return ( a );c = b – 1;d = mult ( a, c );sum = d + a;return ( sum );

}

Berdasarkan cuplikan source code, 1. Buat dengan menggunakan tanpa Class !!!3. Berdasarkan soal no 1 buat step by step2. Buat dengan menggunakan Class !!!

Page 15: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra
Page 16: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

3. Fibonacci

• The Fibonacci series fn≥0 is a famous series defined by:

f0 :≡ 0, f1 :≡ 1, fn≥2 :≡ fn−1 + fn−2

• f2 = f0 + f1 = 0 + 1 = 1• f3 = f1 + f2 = 1 + 1 = 2• f4 = f2 + f3 = 1 + 2 = 3• f5 = f3 + f4 = 2 + 3 = 5• …. Leonardo Fibonacci

1170-1250

Page 17: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

3. Fibonacci

Page 18: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Tracing Fibonacci• fibo (2) = ?

F(2)

F(0) F(1)

Page 19: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Tracing Fibonacci• fibo (3) = ?

F(3)

F(1) F(2)

F(0) F(1)

Page 20: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Tracing Fibonacci• fibo (4) = ? F(4)

F(2) F(3)

F(0) F(1) F(1) F(2)

F(0) F(1)

Page 21: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

3. FibonacciALGORITMA

fibo( n ) = n if n == 0 or n == 1fibo( n ) = fibo( n – 2 ) + fibo( n – 1 ) if n

>= 2

fibo( 4 ) = fibo( 2 ) + fibo( 3 )= fibo( 0 ) + fibo ( 1 ) + fibo( 3 )= 0 + 1 + fibo( 1 ) + fibo( 2 )= 0 + 1 + 1 + fibo( 0 ) + fibo( 1 )= 0 + 1 + 1 + 0 + 1 = 3

SOURCE CODE

int fibo ( int n ){

int x, y;if ( n <= 1 ) return ( n );x = fibo ( n – 1);y = fibo ( n – 2);return ( x + y );

}

Berdasarkan cuplikan source code, 1. Buat dengan menggunakan tanpa Class !!!2. Berdasarkan contoh no 1 buat step by step3. Buat dengan menggunakan struct !!!4. Berdasarkan contoh no 1 buat step by step

dengan menggunakan struct5. Buat dengan menggunakan Class !!!6. Berdasarkan contoh no 1 buat step by step

dengan menggunakan class

Page 22: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra
Page 23: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

4. Towers of HanoiALGORITMA1. If n == 1, move the single disk from A to C and stop.2. Move the top n – 1 disks from A to B, using C as auxiliary.3. Move the remaining disk from A to C.4. Move the n – 1 disks from B to C, using A as auxiliary.

SOURCE CODEvoid towers( int n, char from, char to, char aux){

if ( n == 1 ) { printf(“\nmove disk 1 from %c to %c”, from, to); return;

}towers( n – 1, from, aux, to );printf(“\nmove disk %d from %c to %c”, n, from, to);towers( n – 1, aux, to, from );

}

Page 24: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Tracing Towers of Hanoi• towers(3, A, B, C) = ?

Page 25: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Hanoi

Page 26: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Jumlah Perpindahan Dengan 3 Menara

Jumlah Keping Jumlah Perpindahan Proses Perpindahan

1 JP1 = 1 JP1 = 1

2 JP2 = 3 JP2 = 2 * JP1 + 1

3 JP3 = 7 JP3 = 2 * JP2 + 1

4 JP4 = 15 JP4 = 2 * JP3 + 1

5 JP5 = 31 JP5 = 2 * JP4 + 1

6 JP6 = 63 JP6 = 2 * JP5 + 1

7 JP7 = 127 JP7 = 2 * JP6 + 1

....

....

....

....

n JPn = ....... JPn = 2 * JPn + 1

Page 27: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

Jumlah Perpindahan Dengan 4 Menara

Jumlah Keping Jumlah Perpindahan Proses Perpindahan

1 JP1 = 1 JP1 = 1

2 JP2 = 2 JP2 = 2

3 JP3 = 5 JP3 = 2 * JP2 + 1

4 JP4 = 11 JP4 = 2 * JP3 + 1

5 JP5 = 22 JP5 = 2 * JP4 + 1

6 JP6 = 45 JP6 = 2 * JP5 + 1

7 JP7 = 91 JP7 = 2 * JP6 + 1

....

....

....

....

n JPn = ....... JPn = 2 * JPn + 1

Page 28: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra

TRACING Towers of Hanoi

Towers(4 keping, A, B, C) =

Page 29: Algoritma Struktur Data€¦ · 9. Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10. Thompson Susabda Ngoen , Algoritma dan Struktur Data Bahasa C, Mitra