Post on 11-Apr-2017
Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom
Struktur Data dan AlgoritmaAlgoritma Pengurutan
2014
CEP - CCITFakultas Teknik Universitas Indonesia
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
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!
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!
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 :
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.
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.
Bubble Sort : C# Code
Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom
Bandingkan kode berikut:
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)
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
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
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
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:
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
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.
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
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
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
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
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 :
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 :
Algorithm and Data Structure (C#) Dudy Fathan Ali S.Kom
Terima KasihDudy Fathan Ali S.Kom
dudy.fathan@eng.ui.ac.id