algorithm & data structure - algoritma pengurutan

39
Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom Struktur Data dan Algoritma Algoritma Pengurutan 2014 CEP - CCIT Fakultas Teknik Universitas Indonesia

Upload: dudy-ali

Post on 11-Apr-2017

59 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Algorithm & Data Structure - Algoritma Pengurutan

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

Struktur Data dan AlgoritmaAlgoritma Pengurutan

2014

CEP - CCITFakultas Teknik Universitas Indonesia

Page 2: Algorithm & Data Structure - Algoritma Pengurutan

Outline

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

• Beberapa algoritma untuk melakukan sorting:– Bubble sort– Selection sort– Insertion sort– Shell sort– Merge sort– Quick sort

• Untuk masing-masing algoritma:– Ide dasar– Contoh eksekusi– Algoritma

Page 3: Algorithm & Data Structure - Algoritma Pengurutan

Outline

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

• Sorting = pengurutan• Sorted = terurut menurut kaidah/aturan tertentu• Data pada umumnya disajikan dalam bentuk sorted.• Contoh:– Nama di buku telpon– Kata-kata dalam kamus– File-file di dalam sebuah directory– Indeks sebuah buku– Data mutasi rekening tabungan– CD di toko musik

• Bayangkan jika data di atas tidak terurut!

Page 4: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Ide Dasar

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

o Bubble = busa/udara dalam air – apa yang terjadi?– Busa dalam air akan naik ke atas. Mengapa?– Ketika busa naik ke atas, maka air yang di atasnya akan turun

memenuhi tempat bekas busa tersebut.o Pada setiap iterasi, bandingkan elemen dengan sebelahnya:

yang busa naik, yang air turun!

Page 5: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

• Untuk memahami penerapan dari algoritma Bubble Sort, maka kita akan membuat array yang sudah terisi dengan angka yang belum terurut.

arr

210 432 6 75 3

Page 6: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

• Untuk mensortir array dengan algoritma bubble sort, kita harus membuat perulangan sejumlah isi dari array yang ingin diurutkan.

• Setiap loopingnya, akan kita beri nama “Pass”

– Pass = 1– n = 5

arr

210 432 6 75 3

Page 7: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 1– n = 5

o Bandingkan isi dari array yang ada pada index 0 dengan index 1o Bandingkan sebanyak n - x

arr

210 432 6 75 3

Bandingkan sebanyak n - pass

Page 8: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 1– n = 5

o Tukar nilainya apabila index 0 lebih besar daripada index 1 (yang nilainya paling besar, akan menuju ke index berikutnya)

arr

210 436 75 3

Swap

22 5

Bandingkan sebanyak n - pass

Page 9: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 1– n = 5

o Bandingkan index ke 1 dengan index ke 2 dan tukar nilainya apabila index 1 lebih besar dari index ke 2

arr

210 436 7 32 5

No Change

Bandingkan sebanyak n - pass

Page 10: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 1– n = 5

o Bandingkan index ke 2 dengan index ke 3 dan tukar nilainya apabila index 2 lebih besar dari index ke 3

No Change

arr

210 436 7 32 5

Bandingkan sebanyak n - pass

Page 11: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 1– n = 5

o Bandingkan index ke 3 dengan index ke 4 dan tukar nilainya apabila index 3 lebih besar dari index ke 4

Swap

arr

210 436 7 32 5 3 7

Bandingkan sebanyak n - pass

Page 12: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 1– n = 5

o Bandingkan index ke 3 dengan index ke 4 dan tukar nilainya apabila index 3 lebih besar dari index ke 4

Largest element is placed at its correct position after Pass 1

arr

210 436 3 72 5

Bandingkan sebanyak n - pass

Page 13: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 2– n = 5

o Bandingkan index ke 0 dengan index ke 1 dan tukar nilainya apabila index 0 lebih besar dari index ke 1

No Change

arr

210 436 3 72 5

Bandingkan sebanyak n - pass

Page 14: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 2– n = 5

o Bandingkan index ke 1 dengan index ke 2 dan tukar nilainya apabila index 1 lebih besar dari index ke 2

No Change

arr

210 436 3 72 5

Bandingkan sebanyak n - pass

Page 15: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 2– n = 5

o Bandingkan index ke 2 dengan index ke 3 dan tukar nilainya apabila index 2 lebih besar dari index ke 3

Swap

arr

210 436 3 72 5 3 6

Bandingkan sebanyak n - pass

Page 16: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 2– n = 5

o Bandingkan index ke 2 dengan index ke 3 dan tukar nilainya apabila index 2 lebih besar dari index ke 3

Second largest element is placed at its correct position after Pass 2

arr

210 433 6 72 5

Bandingkan sebanyak n - pass

Page 17: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 3– n = 5

o Bandingkan index ke 0 dengan index ke 1 dan tukar nilainya apabila index 0 lebih besar dari index ke 1

No Change

arr

210 433 6 72 5

Bandingkan sebanyak n - pass

Page 18: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 3– n = 5

o Bandingkan index ke 1 dengan index ke 2 dan tukar nilainya apabila index 1 lebih besar dari index ke 2

arr

210 433 6 72 53 5

Bandingkan sebanyak n - pass

Page 19: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 3– n = 5

o Bandingkan index ke 1 dengan index ke 2 dan tukar nilainya apabila index 1 lebih besar dari index ke 2

Third largest element is placed at its correct position after Pass 3

arr

210 43

5 6 72 3

Bandingkan sebanyak n - pass

Page 20: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 4– n = 5

o Bandingkan index ke 0 dengan index ke 1 dan tukar nilainya apabila index 2 lebih besar dari index ke 1

No Change

arr

210 43

5 6 72 3

Bandingkan sebanyak n - pass

Page 21: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

– Pass = 4– n = 5

o Pada akhirnya, setiap nilai pada array telah terurut dengan benar.

arr

210 43

5 6 72 3

Bandingkan sebanyak n - pass

Page 22: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : Algoritma

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1. deklarasi var pass dan masukkan nilai 12. ulangi selama pass < jumlah size array a. deklarasi var i = 0 b. ulangi aa dan bb selama i < jumlah size array - pass aa. cek apakah array[i] > array[i + 1]

jika ya : tukar tempatnya. bb. tambahkan 1 untuk nilai i c. tambahkan 1 untuk nilai pass

o Dengan memahami langkah-langkah sortir dengan menggunakan Bubble Sort, maka kita bisa membuat algoritma untuk Bubble Sort sebagai berikut :

Page 23: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : C# Code

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

Algoritma Bubblesort

1. deklarasi var pass dan masukkan nilai 12. ulangi selama pass < jumlah size array a. deklarasi var i = 0 b. ulangi aa dan bb selama i < jumlah size array - pass aa. cek apakah array[i] > array[i + 1]

jika ya : tukar tempatnya. bb. tambahkan 1 untuk nilai i c. tambahkan 1 untuk nilai pass

Implementasi algoritma dengan menggunakan while loop.

Page 24: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : C# Code

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

Algoritma Bubblesort

1. deklarasi var pass dan masukkan nilai 12. ulangi selama pass < jumlah size array a. deklarasi var i = 0 b. ulangi aa dan bb selama i < jumlah size array - pass aa. cek apakah array[i] > array[i + 1]

jika ya : tukar tempatnya. bb. tambahkan 1 untuk nilai i c. tambahkan 1 untuk nilai pass

Implementasi algoritma dengan menggunakan for loop.

Page 25: Algorithm & Data Structure - Algoritma Pengurutan

Bubble Sort : C# Code

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

Bandingkan kode berikut:

Page 26: Algorithm & Data Structure - Algoritma Pengurutan

Selection Sort : Ide Dasar

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

o Kondisi awal:– Unsorted list = data

o Ambil yang terbaik (select) dari unsorted list, tambahkan di belakang sorted list.

o Lakukan terus sampai unsorted list habis.o Terbaik (Bisa yang paling kecil, atau yang paling besar)

Page 27: Algorithm & Data Structure - Algoritma Pengurutan

Selection Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

4240 2 1 3 3 4 0 -1 655843

40 2 1 43 3 4 0 -1 42 65583

40 2 1 43 3 4 0 -1 58 3 6542

40 2 1 43 3 65 0 -1 58 3 42 4

Page 28: Algorithm & Data Structure - Algoritma Pengurutan

Selection Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

4240 2 1 3 3 4 0 655843-1

42-1 2 1 3 3 4 0 65584340

42-1 2 1 3 3 4 655843400

42-1 2 1 0 3 4 655843403

Page 29: Algorithm & Data Structure - Algoritma Pengurutan

Selection Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1

42-1 2 1 3 4 6558434030

42-1 0 3 4 6558434032

1 42-1 0 3 4 6558434032

1 420 3 4 6558434032-1

1 420 3 4 6558434032-1

Page 30: Algorithm & Data Structure - Algoritma Pengurutan

Selection Sort : Algoritma

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1. deklarasi i = 02. ulangi selama i < max index array a. deklarasi index min = i b. deklarasi j = i + 1 c. ulangi selama j < jumlah ukuran array aa. cek apakah array[j] lebih kecil dari array[min] jika ya, update min = j bb. tambahkan 1 untuk nilai j d. tukar posisi min dengan i e. tambahkan 1 untuk nilai i

Untuk algoritma diatas, nilai terbaik adalah nilai terkecil.

Dengan catatan:

Page 31: Algorithm & Data Structure - Algoritma Pengurutan

Selection Sort : Algoritma

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

Algoritma Selection Sort

1. deklarasi i = 02. ulangi selama i < max index array a. deklarasi index min = i b. deklarasi j = i + 1 c. ulangi selama j < jumlah ukuran array aa. cek apakah array[j] lebih kecil dari array[min] jika ya, update min = j bb. tambahkan 1 untuk nilai j d. tukar posisi min dengan i e. tambahkan 1 untuk nilai i

Page 32: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : Ide Dasar

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

o Kondisi awal:– Unsorted list = data

o Ambil sembarang elemen dari unsorted list, sisipkan (insert) pada posisi yang benar dalam sorted list.

o Lakukan terus sampai unsorted list habis.o Bayangkan anda mengurutkan kartu.

Page 33: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

40 2 1 43 3 65 0 -1 58 3 42 4

2 40 1 43 3 65 0 -1 58 3 42 4

1 2 40 43 3 65 0 -1 58 3 42 4

40

Page 34: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1 2 3 40 43 65 0 -1 58 3 42 4

1 2 40 43 3 65 0 -1 58 3 42 4

1 2 3 40 43 65 0 -1 58 3 42 4

Page 35: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1 2 3 40 43 65 0 -1 58 3 42 4

1 2 3 40 43 650 -1 58 3 42 4

1 2 3 40 43 650 58 3 42 41 2 3 40 43 650-1

Page 36: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : Contoh

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1 2 3 40 43 650 58 3 42 41 2 3 40 43 650-1

1 2 3 40 43 650 58 42 41 2 3 3 43 650-1 5840 43 65

1 2 3 40 43 650 42 41 2 3 3 43 650-1 5840 43 65

1 2 3 40 43 650 421 2 3 3 43 650-1 584 43 6542 5840 43 65

Page 37: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : Algoritma

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1. set i = 12. ulangi selama i < jumlah array a. temp = array[i] b. int j = i c. ulangi selama j < 0 dan temp < array[j-1] aa. array[j] = array[j-1] bb. j-- d. array[j] = temp e. i++

o Dengan memahami langkah-langkah sortir dengan menggunakan Insertion Sort, maka kita bisa membuat algoritma untuk Insertion Sort sebagai berikut :

Page 38: Algorithm & Data Structure - Algoritma Pengurutan

Insertion Sort : C# Code

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

1. set i = 12. ulangi selama i < jumlah array a. temp = array[i] b. int j = i c. ulangi selama j > 0 dan temp < array[j-1] aa. array[j] = array[j-1] bb. j-- d. array[j] = temp e. i++

Algoritma :

Page 39: Algorithm & Data Structure - Algoritma Pengurutan

Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom

Terima KasihDudy Fathan Ali S.Kom

[email protected]