ADVANCED
ALGORITHM
DESIGN
KONTEN DARI MATERI INI
1. Flashback Algoritma Lagi
2. Struktur Data dalam Algoritma
3. Pencarian dalam Algoritma
4. Sorting Dalam Algoritma
ALGORITMA
01
Definisi secara umum
Definisi Algoritma
1. Masalah : Persoalan yang ingin diselesaikan
2. Masukan / Proses : Pe-rincian Masalah, Pengidentifikasian Pola serta Proses yang akan
dilakukan untuk masalah.
3. Keluaran: Solusi untuk Memecahkan Masalah
Sifat Sifat Algoritma Yang baik
1. Benar : Solusi yang dihasilkan dapat menyelesaikan masalah.
2. Efisien : Algoritma tersebut tidak memakan banyak waktu dan juga tidak memakan
banyak memori dalam pemrosesannya.
3. Mudah diimplementasikan : Dalam mengimplementasikan menjadi Suatu rancangan /
code dalam dunia nyata dengan mudah dan dimengerti.
ALGORITMA
02
In Data Structure
STRUKTUR DATA
adalah sebuah cara untuk mengatur data (organize data) dengan cara yang memungkinkannya
diproses dalam waktu yang efektif.
Ada beberapa perintah struktur data yang dapat digunakan untuk mengatur data yaitu:
Stack
Array Linked List
variabel yang memiliki tipe data
yang sama dan mampu
menyimpan beberapa nilai
dalam satu variabel
Queue Graph Hashing
Linked List adalah suatu struktur
data linier. Berbeda dengan array
yang juga merupakan struktur data
linier dan tipe data komposit, linked
list dibentuk secara dinamik.
Stack adalah struktur data linier yang mengikuti
prinsip Last In First Out (LIFO). Ini berarti elemen
terakhir yang dimasukkan ke dalam tumpukan
dihapus terlebih dahulu.
Queue adalah struktur linier yang
mengikuti urutan tertentu di mana
operasi dilakukan. Urutannya adalah
First In First Out (FIFO)
Merupakan struktur data yang berisi
dari beberapa node yang saling
terhubung.
Hashing adalah struktur data penting yang
dirancang untuk memecahkan masalah,
menemukan dan menyimpan data secara
efisien dalam array.
Mempunyai kumpulan elemen yang saling berdekatan. Jika ingin melakukan pencarian data pada
array, maka menggunakan indeks pada array tersebut.
Kapasitas array bersifat statis, artinya tidak bisa dimodifikasi secara langsung, seperti ketika ingin
menyisipkan indeks baru, atau menghapus indeks tertentu. Serta hanya bisa menyimpan beberapa
data dengan tipe data yang sama
ARRAY
Contoh:
String[] buah = {“jeruk”, “mangga”, “apel”}
Int[] nilai = {10,20,25}
1. Kelebihan Struktur Data Array:
● Bisa digunakan sebagai implementasi tipe lainnya, seperti queue dan stack.
● Proses pencarian data bisa lebih cepat.
1. Kekurangan Struktur Data Array:
● Penambahan dan pengurangan data membutuhkan waktu lebih lama karena
struktur data array menyimpan data secara terurut.
ARRAY
Merupakan struktur data yang terdiri dari urutan data linier yang terhubung satu
sama lain. Pada linked list, pencarian dilakukan secara manual karena tidak bisa
melakukan pencarian secara acak (by index).
LINKED LIST
Node pertama pada linked list dinamakan HEAD dan pointer sebelum node
pertama merujuk ke null. Sedangkan node terakhir pada linked list dinamakan
TAIL dan pointer setelah node terakhir merujuk ke null.
Terdapat 3 macam tipe linked list, yaitu:
Single Linked List
Double Linked List
Circular Linked List
Kelebihan Struktur Data Linked List:
● Ukuran lebih dinamis
● Alokasi penggunaan memori menyesuaikan kebutuhan
● Penambahan atau pengurangan data lebih cepat
Kekurangan Struktur Data Linked List:
● Memakai memori lebih besar
● Sulit untuk kembali ke node sebelumnya (kecuali model doubly linked list)
● Proses lebih panjang karena tidak memakai indeks
LINKED LIST
Merupakan tipe data yang linier dan mengikuti aturan tertentu. Secara konsep yang
digunakan oleh stack adalah LIFO (Last In First Out) atau FILO (First In Last Out).
Maknanya yaitu data yang terakhir masuk akan keluar pertama kali, begitu juga
sebaliknya
STACK
STACK
Terdapat 4 konsep utama dalam struktur data stack, yaitu:
1. Push: menambahkan item ke dalam stack, akan jadi kondisi overflow jika
stack sudah penuh.
2. Pop: mengambil/membuang item dari stack. Pengambilan item sesuai
dengan urutan stack. Jika stack habis, maka akan terjadi kondisi overflow.
3. Peek/Top: mengembalikan elemen teratas ke dalam stack.
4. isEmpty: Mengembalikan nilai true jika stack kosong, dan false jika stack
masih memiliki elemen.
STACK
Kelebihan Struktur Data Stack:
● Dapat mengelola data secara efisien
● Bisa membersihkan objek secara otomatis
● Memudahkan manajemen memori
Kekurangan Struktur Data Stack:
● Kapasitas memori yang terbatas
● Ada kemungkinan overflow jika terjadi proses yang begitu banyak
● Tidak dapat mengakses data secara acak
QUEUE
Tipe struktur data linear yang bersifat FIFO (First In First Out), yaitu data yang
masuk pertama kali adalah data yang pertama kali diambil. Contoh sederhana yang
menggambarkan tipe ini adalah orang yang mengantri. Siapa yang duluan datang,
itu yang dilayani lebih dulu.
QUEUE
Terdapat 4 konsep utama dalam struktur data queue, yaitu:
1. Enqueue: menambah item ke dalam antrian. Jika antrian sudah penuh, maka
akan timbul overflow condition.
2. Dequeue: menghapus item dari dalam antrian. Item yang dipilih untuk
dihilangkan, yaitu item yang sama ketika ditambah.
3. Front: mengambil bagian depan antrian.
4. Rear: mengambil bagian akhir antrian.
QUEUE
Kelebihan Struktur Data Queue:
● Data yang masuk akan dilayani sesuai urutannya.
● Proses antrian data lebih cepat dan optimal.
● Menangani beberapa tipe data sekaligus.
Kekurangan Struktur Data Queue:
● Jika waktu pelayanan habis, data terakhir tidak akan dilayani.
● Proses yang rumit jika memanipulasi data dari tengah.
● Butuh waktu lama untuk mencari antrian.
GRAPH
Merupakan struktur data yang berisi dari beberapa node yang saling terhubung. Jadi setiap
garis akan saling menghubungkan dua node. Biasanya tipe ini digunakan untuk menunjukkan
jaringan/ data yang saling terhubung secara tertentu.
Terdapat 2 tipe graph, yaitu:
1. Directed graph: setiap garis akan terhubung ke semua node.
2. Undirected graph: tidak semua node akan terhubung oleh garis. Jika ada node yang
tidak terhubung/putus, maka disebut dengan isolated vertex.
GRAPH
Kelebihan Struktur Data Graph:
● Dapat membantu memeriksa hubungan antara node dengan cepat.
● Cocok digunakan untuk grafik yang tidak terlalu banyak node.
Kekurangan Struktur Data Graph:
● Membutuhkan waktu lama untuk memodifikasi data.
● Semakin banyak node, maka proses pencarian data akan semakin panjang.
HASHING
Metode untuk menyimpan data dalam sebuah array agar penyimpanan, pencarian,
penambahan, dan penghapusan data dapat dilakukan dengan cepat. Dengan cara mengakses
lokasi / index penyimpanan data secara langsung.
Untuk mengurangi banyaknya ruang alamat yang digunakan untuk pemetaan dari key yang
memiliki cakupan yang luas ke nilai alamat yang memiliki cakupan yang dipersempit.
For Instance : Misal menyimpan barang di suatu loker yang ada nomor lokernya. Jika kita lupa
nomor lokernya, kita akan cek satu - satu loker yang ada sampai barangnya ketemu ( binary
search ). Tetapi jika kita tahu nomor lokernya, kita langsung bisa menemukan barang di loker
tersebut dalam waktu yang cepat.
HASHING
Data akan dicari berdasarkan informasi uniknya -> Data disimpan dalam format dictionary atau
key-value pairs.
Dalam hashing, untuk penambahan atau pencarian, key tersebut akan dipetakan kedalam suatu
index / lokasi dari suatu data menggunakan hash function, dan terdapat hash table yang
merupakan array tempat penyimpanan index/lokasi data yang berdasarkan output hash
function.
Mengapa HASH TABLE ?
Contoh : Nomor Induk Pegawai (NIP) perusahaan telkom terdiri dari 5 digit antara 00000 -
99999. Bila menggunakan array, diperlukan array yang dapat menampung 100.000 elemen (
karena diakses berdasarkan index-nya, maka index = NIP ). Kenyataannya, hanya ada 100
pegawai perusahaan tersebut, sehingga akan terjadi pemborosan memory.
Diperlukan array yang berukuran kecil tetapi bisa menampung semua data -> Hash Table.
Bagaimana Memetakan NIP dan index array hash table ? -> Hash Function
HASHING
Kelebihan Struktur Data Hashing ( Hash Table ):
● Dibandingkan dengan tipe lainnya, kadang penggunaan hash table lebih efisien dalam
mencari data sehingga sering dipakai pada software untuk pengindeksan basis data.
● Kecepatan dalam insertion, deletions, maupun searching relatif sama.
● Waktu aksesnya yang cukup cepat, jika record yang dicari langsung berada pada angka
hash lokasi penyimpanannya.
Kekurangan Struktur Data ( Hash Table ):
● Bila data menumpuk pada satu/sedikit indeks sehingga terjadi linked list yang panjang.
● Kemungkinan bentrokan data ( collision ) menjadi sangat besar sehingga menjadi tidak
efisien.
STRUKTUR DATA
Lalu apa bedanya antara Struktur data dan Algoritma ?
Algoritma adalah seperangkat aturan yang harus diikuti menyelesaikan suatu masalah.
Contoh kita ingin menyiapkan salad untuk makan siang, jika dianalogikan seperti gambar
berikut:
STRUKTUR DATA
Langkah-langkah:
1. Buah yang masih belum diatur
2. Buah yang sudah disusun sesuai jenisnya
3. Buah dicuci bersih dari kotoran yang menempel
4. Buah dipotong-potong menjadi kecil
5. Buah diberi mayones atau saus lainnya
6. Makan siang telah disiapkan
Penjelasan :
Pada langkah no .1 merupakan awal dari sebuah data yang tidak terorganisir, lalu langkah no 2 merupakan hasil
dari “Struktur Data”.
Pada langkah no .3 - no .5 merupakan sebuah hasil dari Algoritma dan pada langkah 6 adalah masalah yang telah
diselesaikan.
ALGORITMA
03
PENCARIAN
ALGORITMA PENCARIAN
Proses Pencarian adalah menemukan nilai ( data ) tertentu dalam sekumpulan data yang bertipe sama ( tipe dasar
atau tipe bentukan ) -> Array ( Larik )
Pencarian ( Searching ) merupakan proses yang mendasar dalam pengolahan data.
Contoh : UPDATE, INSERT
Algoritma Pencarian adalah algoritma yang menerima sebuah Argumen kunci dan langkah - langkah tertentu akan
mencari data yang disimpan dengan kunci tersebut. Setelah proses dilaksanakan, kemungkinannya adalah data
ditemukan ( successful ) atau tidak ditemukan ( unsuccessful ).
ALGORITMA PENCARIAN
Hasil dari persoalan pencarian bergantung pada spesifikasi detail dari persoalan tersebut, seperti
hasil / keluaran :
- Sebuah Pesan ( message ) : ditemukan atau tidak ditemukan dalam array ( larik ).
Contoh : write('ditemukan) atau
write('tidak ditemukan')
- Indeks Elemen Larik ( array ) dari data/nilai yang ditemukan, jika tidak ditemukan indeks diisi
dengan nilai khusus, misal:-1
Contoh: x=12-> idx=2, x=150-> idx=-1
- Nilai boolean yang menyatakan status hasil pencarian : jika ada data/nilai ditemukan, maka
perubah/variabel yang bertipe boolean diisi dengan true, dan kalau tidak ketemu diisi dengan
false.
Contoh : x=23-> ketemu=true, x=139-> ketemu=false
ALGORITMA PENCARIAN
Bagaimana dengan Duplikasi data ?
- Apabila data yang dicari terdapat lebih dari satu banyaknya, maka hanya data yang pertama kali yang ditemukan
yang di acu, dan algoritma pencarian selesai.
Contoh :
- Array A mempunyai dua buah nilai 42, maka algoritma selesai ketika nilai 42 pertama ditemukan, yaitu pada elemen
ke-6, dan hasilnya adalah idx=6, atau ketemu = true.
- Nilai 42 lainnya tidak dipertimbangkan lagi dalam pencarian.
ALGORITMA PENCARIAN
Bagaimana dengan Duplikasi data ?
- Apabila data yang dicari terdapat lebih dari satu banyaknya, maka hanya data yang pertama kali yang ditemukan
yang di acu, dan algoritma pencarian selesai.
Contoh :
- Array A mempunyai dua buah nilai 42, maka algoritma selesai ketika nilai 42 pertama ditemukan, yaitu pada elemen
ke-6, dan hasilnya adalah idx=6, atau ketemu = true.
- Nilai 42 lainnya tidak dipertimbangkan lagi dalam pencarian.
Metode pencarian data di dalam array diklasifikasikan menjadi 2, yaitu:
1. Metode pencarian beruntun ( sequential search )
Pencarian yang membandingkan data yang ada satu per satu secara berurutan sampai data yang dicari ditemukan
atau tidak ditemukan. Untuk N element data, harus dilakukan pencarian sebanyak N kali juga
2. Metode pencarian bagi dua/pencarian biner ( binary search )
Sebelum pencarian ini dilakukan, data yang akan diproses harus sudah berada dalam keadaan terurut. Untuk N
element data, dibutuhkan pencarian sebanyak
ALGORITMA PENCARIAN
Disebut juga dengan pencarian lurus ( Linear Search ).
Proses membandingkan Setiap elemen array satu bersatu beruntun, mulai elemen pertama sampai elemen yang
dicari ditemukan, atau seluruh elemen sudah diperiksa.
ALGORITMA PENCARIAN SEQUENTIAL
Contoh : Metode pencarian beruntun ( sequential search )
Misalkan nilai yang dicari adalah 18 :
- Pemeriksaan dilakukan terhadap elemen 60,12,76,23,11,42,18 (ditemukan).
- Ternyata nilai ditemukan pada elemen ke 7.
- Indek array yang dikembalikan : idx <- 7.
- Proses pencarian dihentikan.
Misalkan nilai yang dicari adalah 32 :
- Pemeriksaan dilakukan terhadap elemen 60,12,76,23,11,42,18,42 (tidak ditemukan).
- Ternyata nilai tidak ditemukan didalam array,
- Indeks array yang dikembalikan : idx <- -1.
- Proses pencarian dihentikan.
2 Versi Algoritma Pencarian Beruntun ( sequential Search ).
- Aksi Pembandingan dilakukan sebagai kondisi Pengulangan : Tidak menggunakan peubah ( variabel )
boolean dalam proses pencarian.
- Aksi Pembandingan dilakukan didalam badan pengulangan : Menggunakan peubah Variabel ( boolean ) dalam
proses pencarian.
ALGORITMA PENCARIAN SEQUENTIAL
Versi 1 : Aksi pembandingan dilakukan sebagai kondisi pengulangan.
Hasil pencarian yang di inginkan : sebuah peubah boolean yang bernilai true bila nilai ditemukan atau bernilai false
bila data / nilai tidak ditemukan.
Algoritma :
- Setiap elemen array dibandingkan dengan nilai / data yang dicari mulai dari elemen pertama.
- Aksi pembandingan dilakukan selama indeks array belum melebihi banyaknya elemen array (n) dan A[i] tidak
sama dengan nilai / data yang dicari.
- Aksi pembandingan dihentikan, bila A[i] = nilai/data yang dicari atau i = n.
- Elemen terakhir A[i] diperiksa secara khusus.
- Keluaran atau output yang dihasilkan adalah sebuah peubah boolean bernilai true jika data ditemukan ( idx
diisi dengan idx value yang di temukan ), atau false jika data tidak di temukan ( idx diisi dengan nilai -1 ).
ALGORITMA PENCARIAN SEQUENTIAL
Versi 2: Aksi pembandingan dilakukan didalam badan pengulangan ( bukan diawal pengulangan )
Hasil pencarian yang di inginkan : sebuah peubah boolean yang bernilai true bila nilai ditemukan atau bernilai false
bila data / nilai tidak ditemukan.
Algoritma :
- Diperlukan sebuah peubah boolean untuk menyatakan apakah nilai sudah ditemukan.
- Peubah boolean ( misalkan variabel ketemu ) diinisialisasi dengan nilai false.
- Setiap elemen array dibandingkan dengan nilai / data yang dicari mulai dari elemen pertama.
- Jika A[i] = nilai / data yang dicari, peubah Ketemu diisi dengan nilai true, pengulangan dihentikan.
- Sebaliknya, jika A[i] =/= nilai yang dicari, pembandingan dilanjutkan untuk ke elemen berikutnya.
- Keluaran atau output yang dihasilkan adalah nilai yang disimpan di peubah variabel Ketemu.
ALGORITMA PENCARIAN SEQUENTIAL
KINERJA ALGORITMA PENCARIAN BERUNTUN
Data yang belum terurut :
- Secara umum pencarian lambat.
- Waktu pencarian sebanding dengan jumlah elemen array ( larik ).
Data yang sudah terurut :
- Dapat meningkatkan kinerja pencarian.
- Karena dapat segera menyimpulkan bahwa data yang dicari tidak terdapat di dalam larik ( array ) bila
ditemukan elemen array yang lebih besar dari data yang dicari.
ALGORITMA PENCARIAN SEQUENTIAL
Adalah Algoritma Pencarian data yang keadaan Array ( Larik ) yang didalamnya paling efisien ( karena data harus
sudah terurut terlebih dahulu ).
Digunakan untuk kebutuhan pencarian dengan waktu yang cepat ( tidak membaca dari awal sampai akhir ). Mencari
data dengan cara membagi Array menjadi 2 ( dua ).
Dalam Proses Pencarian diperlukan 2 buah indeks array, yaitu indeks terkecil ( indeks ujung kiri array ) dan index
terbesar ( indeks ujung kanan Array ).
ALGORITMA PENCARIAN BINARY SEARCH
LANGKAH LANGKAH PENCARIAN BINARY SEARCH.
Misal Indeks kiri = i , indeks kanan j
1. Bagi 2 elemen array pada elemen tengah. Elemen tengah indeks k = ( i + j ) div ( / ) 2.
Elemen tengah A[k] membagi array menjadi 2 bagian :
Bagian kiri A[i..k-1] dan bagian kanan A[k+1...j]
2. Periksa apakah A[k] = x(data yang dicari),
- Jika ya pencarian selesai ( x sudah ditemukan ).
- Jika A[k] =/= x , harus ditentukan apakah pencarian sebelah kiri atau kanan.
- Jika A[k] < x, maka pencarian dilakukan pada array sebelah kanan.
- JIka A[k] > x, maka pencarian dilakukan pada array sebelah kiri.
3. Ulangi Langkah 1
ALGORITMA PENCARIAN BINARY SEARCH
Ilustrasi yang dicari adalah Angka 22 :
ALGORITMA PENCARIAN BINARY SEARCH
ALGORITMA PENCARIAN BINARY SEARCH
IndeksAwal <- 1
IndeksAkhir <- 14
Ketemu <- False
While ( not ketemu ) and ( indeksAwal <= indeksAkhir ) Do
K <- (indeksAwal + indeksAkhir ) div 2
If A[k] = x then
Ketemu <- true
Else
If A[k] < x then
indeksAwal <- K+1 (Mencari bagian kanan).
Else
indeksAkhir <- k-1 (mencari dibagian kiri).
Endif
Endif
endWhile
*(Memerika, ketemu atau tidak sebagai output).
If Ketemu then
Write(x,’ditemukan pada indeks ke-; k);
Else Write(x,’tidak ditemukan);
Endif
ALGORITMA PENCARIAN BINARY SEARCH
1. Untuk kasus terburuk: x tidak ditemukan, atau x ditemukan setelah ukuran array tinggal 1 elemen,
misal banyaknya elemen array adalah 256, maka menghasilkan pembagian array sebanyak 8 kali,
sedangkan dengan pencarian beruntun melakukan perbandingan sebanyak 256 kali.
2. Untuk Array yang terurut, algoritma Binary Search ( pencarian bagi dua ) jauh lebih cepat daripada
algoritma pencarian beruntun ( Sequential Search ).
Kinerja Algoritma ini :
ALGORITMA PENCARIAN
Algoritma Sequential Search dapat digunakan baik untuk data yang belum terurut maupun data terurut.
Sedangkan untuk Binary Search digunakan untuk data yang terurut saja.
Dari Kinerja kalau mencari performa / kecepatan dari kinerja tentu Binary Search lebih unggul di banding
Sequential Search.
Algoritma Sequential Search / Binary Search ?
ALGORITMA
04
SORTING
Algoritma Sorting Merupakan algoritma yang menempatkan elemen list pada urutan tertentu. Urutan yang paling
sering digunakan adalah urutan numerikal dan urutan lexicographical ( alphabetical order ). Sorting yang efisien
sangat dibutuhkan untuk mengoptimasi penggunaan dari algoritma lain seperti pencarian dan penggabungan yang
membutuhkan list terurut untuk berjalan dengan sempurna, yang juga sering digunakan digunakan untuk data dan
menghasilkan output yang dapat dibaca oleh manusia.
ALGORITMA SORTING
Contoh dalam kehidupan sehari hari :
● Nama di Kontak Smartphone.
● Kata - kata dalam kamus.
● File file di dalam sebuah direktori.
● Indeks sebuah buku.
● Data mutasi rekening tabungan.
● CD di toko musik.
Beberapa Jenis Algoritma Sorting :
ALGORITMA SORTING
Bubble Sort
01 Selection Sort
02
Insertion Sort
03 Merge Sort
04
BUBBLE SORT
ALGORITMA SORTING
Bubble Sort adalah metode pengurutan algoritma dengan cara melakukan penukaran data secara terus
menerus sampai bisa dipastikan dalam suatu iterasi tertentu tidak ada lagi perubahan / penukaran. Algoritma
ini menggunakan perbandingan dalam operasi antara elemennya.
Berikut ini adalah gambaran dari algoritma bubble sort:
1. Bandingkan nilai data ke-1 dan data ke-2
2. Jika data ke-1 lebih besar dari data ke-2 maka tukar posisinya
3. Kemudian data yg lebih besar tadi dibandingkan dengan data ke-3
4. Lakukan langkah nomer 2 hingga selesai.
BUBBLE SORT
ALGORITMA SORTING
Contoh : Misalnya kita akan mengurutkan sebuah array A yang memiliki 3 elemen. Dalam urutan menaik, maka elemen
pertama harus lebih kecil dari elemen terakhir.
BUBBLE SORT
ALGORITMA SORTING
Langkah 1 : dimulai dengan mengakses indeks pertama dari array dan membandingkannya dengan indeks setelahnya (
indeks kedua ).
Karena elemen pertama tidak lebih besar dari elemen kedua, maka tidak akan dilakukan pertukaran
Kemudian dimulai kembali dengan membandingkan indeks kedua dengan indeks setelahnya ( indeks ketiga ).
BUBBLE SORT
ALGORITMA SORTING
Karena elemen kedua lebih besar dari elemen ketiga, maka dilakukan pertukaran.
Selanjutnya, dilakukan dengan aturan yang sama. Apabila nilai di suatu indeks lebih besar dari nilai di indeks
setelahnya, maka pertukaran nilai akan dilakukan.
BUBBLE SORT
ALGORITMA SORTING
Setelah dilakukan pembandingan sebanyak 5 kali, akhirnya didapatkan hasil pengurutan langkah pertama sebagai
berikut.
BUBBLE SORT
ALGORITMA SORTING
Langkah 2: didapatkan hasil perbandingan sebagai berikut :
BUBBLE SORT
ALGORITMA SORTING
Maka, setelah dilakukan pembandingan sebanyak 4 kali, akhirnya didapatkan hasil pengurutan langkah kedua
sebagai berikut.
BUBBLE SORT
ALGORITMA SORTING
Langkah 3: didapatkan hasil pembandingan sebagai berikut :
Maka, setelah dilakukan pembandingan sebanyak 3 kali, akhirnya didapatkan hasil pengurutan langkah ketiga
sebagai berikut.
BUBBLE SORT
ALGORITMA SORTING
Langkah 4: didapatkan hasil pembandingan sebagai berikut :
Maka, setelah dilakukan pembandingan sebanyak 2 kali, akhirnya didapatkan hasil pengurutan langkah ke-empat
sebagai berikut.
BUBBLE SORT
ALGORITMA SORTING
Langkah 4: didapatkan hasil pembandingan sebagai berikut :
Maka, setelah dilakukan pembandingan sebanyak 2 kali, akhirnya didapatkan hasil pengurutan langkah ke empat
sebagai berikut.
BUBBLE SORT
ALGORITMA SORTING
Langkah 5: didapatkan hasil pembandingan sebagai berikut :
Setelah dilakukan pembandingan sebanyak 1 kali, didapatkan hasil pengurutan langkah kelima sebagai berikut.
BUBBLE SORT
ALGORITMA SORTING
Maka, pada akhirnya array dapat dipastikan terurut setelah langkah kelima dikerjakan.
Berikut ini adalah Kelebihan dan Kekurangan Algoritma Bubble Sort :
BUBBLE SORT
ALGORITMA SORTING
KELEBIHAN :
• Algoritma yang simpel.
• Mudah untuk diubah menjadi kode.
• Definisi terurut terdapat dengan jelas
dalam algoritma.
• Cocok untuk pengurutan data dengan
elemen kecil telah terurut.
KEKURANGAN :
• Tidak efektif dalam pengurutan data berskala
besar.
• Langkah pengurutan yang terlalu panjang.
Algoritma selection sort merupakan pengurutan dengan konsep memilih elemen dengan nilai paling
rendah dan menukar elemen tersebut dengan elemen ke i. Nilai dari i dimulai dari 1 ke n, yang dimana n
merupakan jumlah total elemen dikurangi satu.
Analogi algoritma selection sort :
1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. kemudian ditukar posisinya
dengan data pertama.
2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan
data kedua.
3. Mencari data terkecil dari data ketiga sampai data terakhir, kemudian ditukar posisinya dengan data
ketiga.
4. Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang akan diurutkan,
maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir, yaitu data ke n tidak perlu diurutkan
karena hanya tinggal data satu-satunya.
SELECTION SORT
ALGORITMA SORTING
SELECTION SORT
ALGORITMA SORTING
SELECTION SORT
ALGORITMA SORTING
Contoh : Proses pengurutan menggunakan metode selection sort secara terurut nik adalah sebagai berikut:
Algoritma pengurutan selection sort ini termasuk algoritma sulit dibagi/ mudah digabung (hard split/easy join).
Dari proses pengurutannya, Selection sort ini memiliki dua buah varian yaitu :
1. Maximum Sort
Memilih data yang maksimum dari suatu kumpulan data larik, lalu menempatkan data tersebut ke elemen paling
akhir atau paling awal sesuai pengurutan yang diinginkan. Data maksimum/minimum yang diperoleh, “diisolasi” dan
tidak diikutsertakan pada proses pencarian data maksimum berikutnya.
2. Minimum Sort
Memilih data yang minimum dari suatu kumpulan data larik , lalu menempatkan data tersebut ke elemen paling
akhir atau paling awal sesuai pengurutan yang diinginkan. Data minimum yang diperoleh, “diisolasi” dan tidak
diikutsertakan pada proses pencarian data minimum berikutnya.
SELECTION SORT
ALGORITMA SORTING
Setiap metode pengerjaan pastilah memiliki kekurangan dan kelebihannya dalam prosesnya, seperti halnya
lebih cepat namun tidak praktis ataupun lebih lama namun prosesnya sangat praktis. Begitupun dengan
algoritma Selection Sort yang memiliki kekurangan dan kelebihan dalam proses pengerjaannya.
SELECTION SORT
ALGORITMA SORTING
KELEBIHAN :
a) Algoritma ini sangat rapat dan mudah untuk
diimplementasikan.
b) Mempercepat pencarian
c) Mudah menentukan data maksimum
/minimum.
d) Mudah menggabungkannya kembali.
e) Kompleksitas selection sort relatif lebih
kecil.
KEKURANGAN :
a) Membutuhkan method tambahan
b) Sulit untuk digabungkan kembali
c) Perlu dihindari untuk penggunaan data lebih dari
1000 tabel, karena akan menyebabkan
kompleksitas yang lebih tinggi dan kurang praktis
INSERTION SORT
ALGORITMA SORTING
Algoritma insertion sort merupakan suatu metode pengurutan data dengan melakukan penempatan setiap
elemen data pada posisinya dengan membandingkan dengan data-data yang telah ada. Prinsip dari insertion sort
adalah dengan membagi data yang akan diurutkan menjadi dua kelompok, satu kelompok yang belum diurutkan
dan yang satunya lagi sudah diurutkan, Elemen yang pertama diambil dari kelompok list yang belum diurutkan
dan kemudian ditempatkan sesuai posisinya pada bagian lain yang belum diurutkan.
Analogi Algoritma insertion sort
1. Membandingkan data kedua dengan data kesatu
2. Apabila data ke dua lebih kecil maka tukar posisinya
3. Data ketiga dibandingkan dengan data kesatu dan kedua
4. Apabila data ketiga lebih kecil tukar lagi posisinya
5. Data keempat dibandingkan dengan data ketiga hingga kesatu
6. Apabila data keempat lebih kecil dari ketiga maka letakkan data keempat ke posisi paling depan
7. Begitu seterusnya hingga tidak ada lagi data yang dapat dipindahkan.
INSERTION SORT
ALGORITMA SORTING
INSERTION SORT
ALGORITMA SORTING
Contoh tahap tahap insertion sort:
Bagian biru abu abu ( 2 bilangan pertama ) sekarang dalam keadaan terurut secara relatif.
Berikutnya, kita perlu menyisipkan bilang ketiga ( 4 ) kedalam bagian biru abu abu sehingga setelah penyisipan
tersebut, bagian biru abu abu tetap dalam keadaan terurut secara relatif.
INSERTION SORT
ALGORITMA SORTING
Caranya :
Pertama : Ambil bilangan ketiga (4)
Kedua : Geser bilangan kedua (10) sehingga ada ruang untuk disisipi.
Ketiga : Sisipkan bilangan (4) ke posisi yang tepat.
INSERTION SORT
ALGORITMA SORTING
Sekarang ketiga bilangan sudah terurut secara relatif dan kita sisipkan bilangan keempat kepada tiga bilangan
pertama tersebut. Setelah penyisipan, empat bilangan pertama haruslah sudah keadaan terurut secara relatif
Ulangi proses tersebut sampai bilangan terakhir disisipkan
INSERTION SORT
ALGORITMA SORTING
Setiap metode pengerjaan pastilah memiliki kekurangan dan kelebihannya dalam prosesnya, seperti halnya
lebih cepat namun tidak praktis ataupun lebih lama namun prosesnya sangat praktis. Begitupun dengan
algoritma Insertion Sort yang memiliki kekurangan dan kelebihan dalam proses pengerjaannya.
INSERTION SORT
ALGORITMA SORTING
KELEBIHAN :
1. Sederhana dalam penerapannya.
2. Sangat Efektif dalam data yang kecil.
3. Jika list sudah terurut atau sebagian terurut maka
Insertion Sort akan lebih cepat dibandingkan
dengan Quicksort.
4. Sangat Efektif dalam data yang sebagian sudah
terurut.
5. Lebih Efektif dibanding Bubble Sort dan Selection
Sort.
6. Loop( pengulangan ) dalam pada Insertion Sort
sangat cepat, sehingga membuatnya salah satu
algoritma pengurutan tercepat pada jumlah elemen
yang sedikit. ( stabil )
KEKURANGAN :
a) Membutuhkan method tambahan
b) Sulit untuk digabungkan kembali
c) Perlu dihindari untuk penggunaan data lebih dari
1000 tabel, karena akan menyebabkan
kompleksitas yang lebih tinggi dan kurang praktis
MERGE SORT
ALGORITMA SORTING
Algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari
Merge sort.
- Divide : Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
- Conquer : Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif
- Kombinasi : Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data
berurutan
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.
MERGE SORT
ALGORITMA SORTING
Cara Kerja Merge Sort :
Langkah pertama kita bagi menjadi 3 bagian susunan elemen data yaitu 4 dengan 7, 1 dengan 2 dan 9 dengan 5.
Kemudian kita bandingkan elemen pertama yaitu 4 dan 7. Karena 4 sudah lebih kecil dari 7 maka posisi tetap.
MERGE SORT
ALGORITMA SORTING
Kemudian kita bandingkan lagi elemen data ke 2 yaitu angka 1 dan 2. Karena angka 1 lebih kecil dari 2 maka posisi tetap
Kemudian kita bandingkan elemen data ke 3 yaitu angka 9 dan 5. Karena angka 5 lebih kecil dari 9 maka posisi 9
ditukar dengan angka 5
Langkah selanjutnya adalah kita bandingkan angka pertama pada elemen pertama dengan elemen 2 dan elemen 3.
Pertama kita bandingkan angka 4 dengan elemen 2 yaitu angka 1.
MERGE SORT
ALGORITMA SORTING
Cek angka 4 dan 1. Lebih besar mana , karena angka 1 lebih dari angka 4 maka angka 1 akan menempati posisi baru di
elemen pertama.
Kemudian bandingkan angka 4 dengan 2. Cek lebih kecil mana antara angka 4 dan 2 ?
MERGE SORT
ALGORITMA SORTING
Karena angka 2 lebih kecil dari 4 maka angka 2 ke elemen baru di posisi ke 2.
MERGE SORT
ALGORITMA SORTING
Kemudian bandingkan angka 4 dengan elemen ke 3 yaitu angka 5.
Cek lebih kecil mana angka 4 dengan angka 5. Karena angka 4 lebih kecil dari 5 maka angka 4 menempati posisi ke 3.
MERGE SORT
ALGORITMA SORTING
Lanjut ke urutan angka ke 2 pada elemen pertama yaitu angka 7. Bandingkan angka 7 dan 5. Lebih kecil mana antara
angka 7 dan 5.
Karena angka 5 lebih kecil dari 7 maka angka 5 menempati posisi ke 4.
MERGE SORT
ALGORITMA SORTING
Kemudian langkah selanjutnya bandingkan angka 7 dengan angka 9. Lebih kecil mana antara angka 7 dan 9.
Karena angka 7 lebih kecil dari angka 9 maka 7 menempati urutan ke 5.
Karena angka 9 adalah angka terakhir maka angka 9 menempati posisi ke 6.
MERGE SORT
ALGORITMA SORTING
AFTER
BEFORE
Setiap metode pengerjaan pastilah memiliki kekurangan dan kelebihannya dalam prosesnya, seperti halnya
lebih cepat namun tidak praktis ataupun lebih lama namun prosesnya sangat praktis. Begitupun dengan
algoritma Merge Sort yang memiliki kekurangan dan kelebihan dalam proses pengerjaannya.
MERGE SORT
ALGORITMA SORTING
KELEBIHAN :
1. Dibanding dengan algoritma lain, merge sort ini
termasuk algoritma yang sangat efisien dalam
penggunaannya sebab setiap list selalu dibagi bagi
menjadi list yang lebih kecil, kemudian digabungkan
lagi sehingga tidak perlu melakukan banyak
perbandingan.
2. Cocok untuk sorting akses datanya lambat misalnya
tape drive atau hard disk.
3. -Cocok untuk sorting data yang biasanya diakses
secara sequentially (berurutan),
KEKURANGAN :
- Terlalu banyak menggunakan ruang pada
memori.
- Merge Sort membutuhkan lebih banyak ruang
daripada jenis sorting lainnya.
BONUS : QUICK SORT
ALGORITMA SORTING
Algoritma ini berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini hanya mengikuti
langkah – langkah sebagai berikut :
- Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r] dimana setiap elemen A[p…q-1]
adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama
dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu
bagian dari prosedur pemisahan.
- Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif. Pada algoritma quicksort, langkah ”kombinasi” tidak
dilakukan karena telah terjadi pengurutan elemen – elemen pada sub-array.
BONUS : QUICK SORT
ALGORITMA SORTING
ALGORITMA
05
DYNAMIC PROGRAMMING
DYNAMIC PROGRAMMING
Dynamic Programming (biasa disingkat DP) adalah suatu teknik algoritma untuk memecahkan masalah dimana
solusi optimal dari masalah tersebut dapat dipandang sebagai suatu deret keputusan. Pada umumnya dynamic
programming digunakan untuk masalah optimisasi. Dimana suatu permasalahan memiliki banyak solusi. Setiap
solusi memiliki nilai masing masing. Dan ingin ditemukan solusi dengan nilai yang optimum ( maksimal atau
minimal ).
Dynamic programming dapat dibagi menjadi empat tahap yang berurutan
sebagai berikut :
1. Karakterisasi struktur pada solusi optimasi
2. Mendefinisikan nilai solusi optimal secara rekursif
3. Menghitung nilai solusi optimal pada model bottom-up
4. Menyusun solusi optimal dari informasi hasil perhitungan
Langkah 1 sampai langkah 3 adalah dasar dynamic-programming dalam
menemukan solusi untuk suatu problem, langkah ke-4 dapat dilakukan jika nilai
solusinya optimal diperlukan.

Design Algoritma Pemrograman Tingkat Lanjut

  • 1.
  • 2.
    KONTEN DARI MATERIINI 1. Flashback Algoritma Lagi 2. Struktur Data dalam Algoritma 3. Pencarian dalam Algoritma 4. Sorting Dalam Algoritma
  • 3.
  • 4.
    Definisi Algoritma 1. Masalah: Persoalan yang ingin diselesaikan 2. Masukan / Proses : Pe-rincian Masalah, Pengidentifikasian Pola serta Proses yang akan dilakukan untuk masalah. 3. Keluaran: Solusi untuk Memecahkan Masalah
  • 5.
    Sifat Sifat AlgoritmaYang baik 1. Benar : Solusi yang dihasilkan dapat menyelesaikan masalah. 2. Efisien : Algoritma tersebut tidak memakan banyak waktu dan juga tidak memakan banyak memori dalam pemrosesannya. 3. Mudah diimplementasikan : Dalam mengimplementasikan menjadi Suatu rancangan / code dalam dunia nyata dengan mudah dan dimengerti.
  • 6.
  • 7.
    STRUKTUR DATA adalah sebuahcara untuk mengatur data (organize data) dengan cara yang memungkinkannya diproses dalam waktu yang efektif.
  • 8.
    Ada beberapa perintahstruktur data yang dapat digunakan untuk mengatur data yaitu: Stack Array Linked List variabel yang memiliki tipe data yang sama dan mampu menyimpan beberapa nilai dalam satu variabel Queue Graph Hashing Linked List adalah suatu struktur data linier. Berbeda dengan array yang juga merupakan struktur data linier dan tipe data komposit, linked list dibentuk secara dinamik. Stack adalah struktur data linier yang mengikuti prinsip Last In First Out (LIFO). Ini berarti elemen terakhir yang dimasukkan ke dalam tumpukan dihapus terlebih dahulu. Queue adalah struktur linier yang mengikuti urutan tertentu di mana operasi dilakukan. Urutannya adalah First In First Out (FIFO) Merupakan struktur data yang berisi dari beberapa node yang saling terhubung. Hashing adalah struktur data penting yang dirancang untuk memecahkan masalah, menemukan dan menyimpan data secara efisien dalam array.
  • 9.
    Mempunyai kumpulan elemenyang saling berdekatan. Jika ingin melakukan pencarian data pada array, maka menggunakan indeks pada array tersebut. Kapasitas array bersifat statis, artinya tidak bisa dimodifikasi secara langsung, seperti ketika ingin menyisipkan indeks baru, atau menghapus indeks tertentu. Serta hanya bisa menyimpan beberapa data dengan tipe data yang sama ARRAY Contoh: String[] buah = {“jeruk”, “mangga”, “apel”} Int[] nilai = {10,20,25}
  • 10.
    1. Kelebihan StrukturData Array: ● Bisa digunakan sebagai implementasi tipe lainnya, seperti queue dan stack. ● Proses pencarian data bisa lebih cepat. 1. Kekurangan Struktur Data Array: ● Penambahan dan pengurangan data membutuhkan waktu lebih lama karena struktur data array menyimpan data secara terurut. ARRAY
  • 11.
    Merupakan struktur datayang terdiri dari urutan data linier yang terhubung satu sama lain. Pada linked list, pencarian dilakukan secara manual karena tidak bisa melakukan pencarian secara acak (by index). LINKED LIST Node pertama pada linked list dinamakan HEAD dan pointer sebelum node pertama merujuk ke null. Sedangkan node terakhir pada linked list dinamakan TAIL dan pointer setelah node terakhir merujuk ke null. Terdapat 3 macam tipe linked list, yaitu: Single Linked List Double Linked List Circular Linked List
  • 12.
    Kelebihan Struktur DataLinked List: ● Ukuran lebih dinamis ● Alokasi penggunaan memori menyesuaikan kebutuhan ● Penambahan atau pengurangan data lebih cepat Kekurangan Struktur Data Linked List: ● Memakai memori lebih besar ● Sulit untuk kembali ke node sebelumnya (kecuali model doubly linked list) ● Proses lebih panjang karena tidak memakai indeks LINKED LIST
  • 13.
    Merupakan tipe datayang linier dan mengikuti aturan tertentu. Secara konsep yang digunakan oleh stack adalah LIFO (Last In First Out) atau FILO (First In Last Out). Maknanya yaitu data yang terakhir masuk akan keluar pertama kali, begitu juga sebaliknya STACK
  • 14.
    STACK Terdapat 4 konseputama dalam struktur data stack, yaitu: 1. Push: menambahkan item ke dalam stack, akan jadi kondisi overflow jika stack sudah penuh. 2. Pop: mengambil/membuang item dari stack. Pengambilan item sesuai dengan urutan stack. Jika stack habis, maka akan terjadi kondisi overflow. 3. Peek/Top: mengembalikan elemen teratas ke dalam stack. 4. isEmpty: Mengembalikan nilai true jika stack kosong, dan false jika stack masih memiliki elemen.
  • 15.
    STACK Kelebihan Struktur DataStack: ● Dapat mengelola data secara efisien ● Bisa membersihkan objek secara otomatis ● Memudahkan manajemen memori Kekurangan Struktur Data Stack: ● Kapasitas memori yang terbatas ● Ada kemungkinan overflow jika terjadi proses yang begitu banyak ● Tidak dapat mengakses data secara acak
  • 16.
    QUEUE Tipe struktur datalinear yang bersifat FIFO (First In First Out), yaitu data yang masuk pertama kali adalah data yang pertama kali diambil. Contoh sederhana yang menggambarkan tipe ini adalah orang yang mengantri. Siapa yang duluan datang, itu yang dilayani lebih dulu.
  • 17.
    QUEUE Terdapat 4 konseputama dalam struktur data queue, yaitu: 1. Enqueue: menambah item ke dalam antrian. Jika antrian sudah penuh, maka akan timbul overflow condition. 2. Dequeue: menghapus item dari dalam antrian. Item yang dipilih untuk dihilangkan, yaitu item yang sama ketika ditambah. 3. Front: mengambil bagian depan antrian. 4. Rear: mengambil bagian akhir antrian.
  • 18.
    QUEUE Kelebihan Struktur DataQueue: ● Data yang masuk akan dilayani sesuai urutannya. ● Proses antrian data lebih cepat dan optimal. ● Menangani beberapa tipe data sekaligus. Kekurangan Struktur Data Queue: ● Jika waktu pelayanan habis, data terakhir tidak akan dilayani. ● Proses yang rumit jika memanipulasi data dari tengah. ● Butuh waktu lama untuk mencari antrian.
  • 19.
    GRAPH Merupakan struktur datayang berisi dari beberapa node yang saling terhubung. Jadi setiap garis akan saling menghubungkan dua node. Biasanya tipe ini digunakan untuk menunjukkan jaringan/ data yang saling terhubung secara tertentu. Terdapat 2 tipe graph, yaitu: 1. Directed graph: setiap garis akan terhubung ke semua node. 2. Undirected graph: tidak semua node akan terhubung oleh garis. Jika ada node yang tidak terhubung/putus, maka disebut dengan isolated vertex.
  • 20.
    GRAPH Kelebihan Struktur DataGraph: ● Dapat membantu memeriksa hubungan antara node dengan cepat. ● Cocok digunakan untuk grafik yang tidak terlalu banyak node. Kekurangan Struktur Data Graph: ● Membutuhkan waktu lama untuk memodifikasi data. ● Semakin banyak node, maka proses pencarian data akan semakin panjang.
  • 21.
    HASHING Metode untuk menyimpandata dalam sebuah array agar penyimpanan, pencarian, penambahan, dan penghapusan data dapat dilakukan dengan cepat. Dengan cara mengakses lokasi / index penyimpanan data secara langsung. Untuk mengurangi banyaknya ruang alamat yang digunakan untuk pemetaan dari key yang memiliki cakupan yang luas ke nilai alamat yang memiliki cakupan yang dipersempit. For Instance : Misal menyimpan barang di suatu loker yang ada nomor lokernya. Jika kita lupa nomor lokernya, kita akan cek satu - satu loker yang ada sampai barangnya ketemu ( binary search ). Tetapi jika kita tahu nomor lokernya, kita langsung bisa menemukan barang di loker tersebut dalam waktu yang cepat.
  • 22.
    HASHING Data akan dicariberdasarkan informasi uniknya -> Data disimpan dalam format dictionary atau key-value pairs. Dalam hashing, untuk penambahan atau pencarian, key tersebut akan dipetakan kedalam suatu index / lokasi dari suatu data menggunakan hash function, dan terdapat hash table yang merupakan array tempat penyimpanan index/lokasi data yang berdasarkan output hash function.
  • 23.
    Mengapa HASH TABLE? Contoh : Nomor Induk Pegawai (NIP) perusahaan telkom terdiri dari 5 digit antara 00000 - 99999. Bila menggunakan array, diperlukan array yang dapat menampung 100.000 elemen ( karena diakses berdasarkan index-nya, maka index = NIP ). Kenyataannya, hanya ada 100 pegawai perusahaan tersebut, sehingga akan terjadi pemborosan memory. Diperlukan array yang berukuran kecil tetapi bisa menampung semua data -> Hash Table. Bagaimana Memetakan NIP dan index array hash table ? -> Hash Function
  • 24.
    HASHING Kelebihan Struktur DataHashing ( Hash Table ): ● Dibandingkan dengan tipe lainnya, kadang penggunaan hash table lebih efisien dalam mencari data sehingga sering dipakai pada software untuk pengindeksan basis data. ● Kecepatan dalam insertion, deletions, maupun searching relatif sama. ● Waktu aksesnya yang cukup cepat, jika record yang dicari langsung berada pada angka hash lokasi penyimpanannya. Kekurangan Struktur Data ( Hash Table ): ● Bila data menumpuk pada satu/sedikit indeks sehingga terjadi linked list yang panjang. ● Kemungkinan bentrokan data ( collision ) menjadi sangat besar sehingga menjadi tidak efisien.
  • 25.
    STRUKTUR DATA Lalu apabedanya antara Struktur data dan Algoritma ? Algoritma adalah seperangkat aturan yang harus diikuti menyelesaikan suatu masalah. Contoh kita ingin menyiapkan salad untuk makan siang, jika dianalogikan seperti gambar berikut:
  • 26.
    STRUKTUR DATA Langkah-langkah: 1. Buahyang masih belum diatur 2. Buah yang sudah disusun sesuai jenisnya 3. Buah dicuci bersih dari kotoran yang menempel 4. Buah dipotong-potong menjadi kecil 5. Buah diberi mayones atau saus lainnya 6. Makan siang telah disiapkan Penjelasan : Pada langkah no .1 merupakan awal dari sebuah data yang tidak terorganisir, lalu langkah no 2 merupakan hasil dari “Struktur Data”. Pada langkah no .3 - no .5 merupakan sebuah hasil dari Algoritma dan pada langkah 6 adalah masalah yang telah diselesaikan.
  • 27.
  • 28.
    ALGORITMA PENCARIAN Proses Pencarianadalah menemukan nilai ( data ) tertentu dalam sekumpulan data yang bertipe sama ( tipe dasar atau tipe bentukan ) -> Array ( Larik ) Pencarian ( Searching ) merupakan proses yang mendasar dalam pengolahan data. Contoh : UPDATE, INSERT Algoritma Pencarian adalah algoritma yang menerima sebuah Argumen kunci dan langkah - langkah tertentu akan mencari data yang disimpan dengan kunci tersebut. Setelah proses dilaksanakan, kemungkinannya adalah data ditemukan ( successful ) atau tidak ditemukan ( unsuccessful ).
  • 29.
    ALGORITMA PENCARIAN Hasil daripersoalan pencarian bergantung pada spesifikasi detail dari persoalan tersebut, seperti hasil / keluaran : - Sebuah Pesan ( message ) : ditemukan atau tidak ditemukan dalam array ( larik ). Contoh : write('ditemukan) atau write('tidak ditemukan') - Indeks Elemen Larik ( array ) dari data/nilai yang ditemukan, jika tidak ditemukan indeks diisi dengan nilai khusus, misal:-1 Contoh: x=12-> idx=2, x=150-> idx=-1 - Nilai boolean yang menyatakan status hasil pencarian : jika ada data/nilai ditemukan, maka perubah/variabel yang bertipe boolean diisi dengan true, dan kalau tidak ketemu diisi dengan false. Contoh : x=23-> ketemu=true, x=139-> ketemu=false
  • 30.
    ALGORITMA PENCARIAN Bagaimana denganDuplikasi data ? - Apabila data yang dicari terdapat lebih dari satu banyaknya, maka hanya data yang pertama kali yang ditemukan yang di acu, dan algoritma pencarian selesai. Contoh : - Array A mempunyai dua buah nilai 42, maka algoritma selesai ketika nilai 42 pertama ditemukan, yaitu pada elemen ke-6, dan hasilnya adalah idx=6, atau ketemu = true. - Nilai 42 lainnya tidak dipertimbangkan lagi dalam pencarian.
  • 31.
    ALGORITMA PENCARIAN Bagaimana denganDuplikasi data ? - Apabila data yang dicari terdapat lebih dari satu banyaknya, maka hanya data yang pertama kali yang ditemukan yang di acu, dan algoritma pencarian selesai. Contoh : - Array A mempunyai dua buah nilai 42, maka algoritma selesai ketika nilai 42 pertama ditemukan, yaitu pada elemen ke-6, dan hasilnya adalah idx=6, atau ketemu = true. - Nilai 42 lainnya tidak dipertimbangkan lagi dalam pencarian.
  • 32.
    Metode pencarian datadi dalam array diklasifikasikan menjadi 2, yaitu: 1. Metode pencarian beruntun ( sequential search ) Pencarian yang membandingkan data yang ada satu per satu secara berurutan sampai data yang dicari ditemukan atau tidak ditemukan. Untuk N element data, harus dilakukan pencarian sebanyak N kali juga 2. Metode pencarian bagi dua/pencarian biner ( binary search ) Sebelum pencarian ini dilakukan, data yang akan diproses harus sudah berada dalam keadaan terurut. Untuk N element data, dibutuhkan pencarian sebanyak ALGORITMA PENCARIAN
  • 33.
    Disebut juga denganpencarian lurus ( Linear Search ). Proses membandingkan Setiap elemen array satu bersatu beruntun, mulai elemen pertama sampai elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa. ALGORITMA PENCARIAN SEQUENTIAL Contoh : Metode pencarian beruntun ( sequential search ) Misalkan nilai yang dicari adalah 18 : - Pemeriksaan dilakukan terhadap elemen 60,12,76,23,11,42,18 (ditemukan). - Ternyata nilai ditemukan pada elemen ke 7. - Indek array yang dikembalikan : idx <- 7. - Proses pencarian dihentikan. Misalkan nilai yang dicari adalah 32 : - Pemeriksaan dilakukan terhadap elemen 60,12,76,23,11,42,18,42 (tidak ditemukan). - Ternyata nilai tidak ditemukan didalam array, - Indeks array yang dikembalikan : idx <- -1. - Proses pencarian dihentikan.
  • 34.
    2 Versi AlgoritmaPencarian Beruntun ( sequential Search ). - Aksi Pembandingan dilakukan sebagai kondisi Pengulangan : Tidak menggunakan peubah ( variabel ) boolean dalam proses pencarian. - Aksi Pembandingan dilakukan didalam badan pengulangan : Menggunakan peubah Variabel ( boolean ) dalam proses pencarian. ALGORITMA PENCARIAN SEQUENTIAL
  • 35.
    Versi 1 :Aksi pembandingan dilakukan sebagai kondisi pengulangan. Hasil pencarian yang di inginkan : sebuah peubah boolean yang bernilai true bila nilai ditemukan atau bernilai false bila data / nilai tidak ditemukan. Algoritma : - Setiap elemen array dibandingkan dengan nilai / data yang dicari mulai dari elemen pertama. - Aksi pembandingan dilakukan selama indeks array belum melebihi banyaknya elemen array (n) dan A[i] tidak sama dengan nilai / data yang dicari. - Aksi pembandingan dihentikan, bila A[i] = nilai/data yang dicari atau i = n. - Elemen terakhir A[i] diperiksa secara khusus. - Keluaran atau output yang dihasilkan adalah sebuah peubah boolean bernilai true jika data ditemukan ( idx diisi dengan idx value yang di temukan ), atau false jika data tidak di temukan ( idx diisi dengan nilai -1 ). ALGORITMA PENCARIAN SEQUENTIAL
  • 36.
    Versi 2: Aksipembandingan dilakukan didalam badan pengulangan ( bukan diawal pengulangan ) Hasil pencarian yang di inginkan : sebuah peubah boolean yang bernilai true bila nilai ditemukan atau bernilai false bila data / nilai tidak ditemukan. Algoritma : - Diperlukan sebuah peubah boolean untuk menyatakan apakah nilai sudah ditemukan. - Peubah boolean ( misalkan variabel ketemu ) diinisialisasi dengan nilai false. - Setiap elemen array dibandingkan dengan nilai / data yang dicari mulai dari elemen pertama. - Jika A[i] = nilai / data yang dicari, peubah Ketemu diisi dengan nilai true, pengulangan dihentikan. - Sebaliknya, jika A[i] =/= nilai yang dicari, pembandingan dilanjutkan untuk ke elemen berikutnya. - Keluaran atau output yang dihasilkan adalah nilai yang disimpan di peubah variabel Ketemu. ALGORITMA PENCARIAN SEQUENTIAL
  • 37.
    KINERJA ALGORITMA PENCARIANBERUNTUN Data yang belum terurut : - Secara umum pencarian lambat. - Waktu pencarian sebanding dengan jumlah elemen array ( larik ). Data yang sudah terurut : - Dapat meningkatkan kinerja pencarian. - Karena dapat segera menyimpulkan bahwa data yang dicari tidak terdapat di dalam larik ( array ) bila ditemukan elemen array yang lebih besar dari data yang dicari. ALGORITMA PENCARIAN SEQUENTIAL
  • 38.
    Adalah Algoritma Pencariandata yang keadaan Array ( Larik ) yang didalamnya paling efisien ( karena data harus sudah terurut terlebih dahulu ). Digunakan untuk kebutuhan pencarian dengan waktu yang cepat ( tidak membaca dari awal sampai akhir ). Mencari data dengan cara membagi Array menjadi 2 ( dua ). Dalam Proses Pencarian diperlukan 2 buah indeks array, yaitu indeks terkecil ( indeks ujung kiri array ) dan index terbesar ( indeks ujung kanan Array ). ALGORITMA PENCARIAN BINARY SEARCH
  • 39.
    LANGKAH LANGKAH PENCARIANBINARY SEARCH. Misal Indeks kiri = i , indeks kanan j 1. Bagi 2 elemen array pada elemen tengah. Elemen tengah indeks k = ( i + j ) div ( / ) 2. Elemen tengah A[k] membagi array menjadi 2 bagian : Bagian kiri A[i..k-1] dan bagian kanan A[k+1...j] 2. Periksa apakah A[k] = x(data yang dicari), - Jika ya pencarian selesai ( x sudah ditemukan ). - Jika A[k] =/= x , harus ditentukan apakah pencarian sebelah kiri atau kanan. - Jika A[k] < x, maka pencarian dilakukan pada array sebelah kanan. - JIka A[k] > x, maka pencarian dilakukan pada array sebelah kiri. 3. Ulangi Langkah 1 ALGORITMA PENCARIAN BINARY SEARCH
  • 40.
    Ilustrasi yang dicariadalah Angka 22 : ALGORITMA PENCARIAN BINARY SEARCH
  • 41.
    ALGORITMA PENCARIAN BINARYSEARCH IndeksAwal <- 1 IndeksAkhir <- 14 Ketemu <- False While ( not ketemu ) and ( indeksAwal <= indeksAkhir ) Do K <- (indeksAwal + indeksAkhir ) div 2 If A[k] = x then Ketemu <- true Else If A[k] < x then indeksAwal <- K+1 (Mencari bagian kanan). Else indeksAkhir <- k-1 (mencari dibagian kiri). Endif Endif endWhile *(Memerika, ketemu atau tidak sebagai output). If Ketemu then Write(x,’ditemukan pada indeks ke-; k); Else Write(x,’tidak ditemukan); Endif
  • 42.
    ALGORITMA PENCARIAN BINARYSEARCH 1. Untuk kasus terburuk: x tidak ditemukan, atau x ditemukan setelah ukuran array tinggal 1 elemen, misal banyaknya elemen array adalah 256, maka menghasilkan pembagian array sebanyak 8 kali, sedangkan dengan pencarian beruntun melakukan perbandingan sebanyak 256 kali. 2. Untuk Array yang terurut, algoritma Binary Search ( pencarian bagi dua ) jauh lebih cepat daripada algoritma pencarian beruntun ( Sequential Search ). Kinerja Algoritma ini :
  • 43.
    ALGORITMA PENCARIAN Algoritma SequentialSearch dapat digunakan baik untuk data yang belum terurut maupun data terurut. Sedangkan untuk Binary Search digunakan untuk data yang terurut saja. Dari Kinerja kalau mencari performa / kecepatan dari kinerja tentu Binary Search lebih unggul di banding Sequential Search. Algoritma Sequential Search / Binary Search ?
  • 44.
  • 45.
    Algoritma Sorting Merupakanalgoritma yang menempatkan elemen list pada urutan tertentu. Urutan yang paling sering digunakan adalah urutan numerikal dan urutan lexicographical ( alphabetical order ). Sorting yang efisien sangat dibutuhkan untuk mengoptimasi penggunaan dari algoritma lain seperti pencarian dan penggabungan yang membutuhkan list terurut untuk berjalan dengan sempurna, yang juga sering digunakan digunakan untuk data dan menghasilkan output yang dapat dibaca oleh manusia. ALGORITMA SORTING Contoh dalam kehidupan sehari hari : ● Nama di Kontak Smartphone. ● Kata - kata dalam kamus. ● File file di dalam sebuah direktori. ● Indeks sebuah buku. ● Data mutasi rekening tabungan. ● CD di toko musik.
  • 46.
    Beberapa Jenis AlgoritmaSorting : ALGORITMA SORTING Bubble Sort 01 Selection Sort 02 Insertion Sort 03 Merge Sort 04
  • 47.
    BUBBLE SORT ALGORITMA SORTING BubbleSort adalah metode pengurutan algoritma dengan cara melakukan penukaran data secara terus menerus sampai bisa dipastikan dalam suatu iterasi tertentu tidak ada lagi perubahan / penukaran. Algoritma ini menggunakan perbandingan dalam operasi antara elemennya.
  • 48.
    Berikut ini adalahgambaran dari algoritma bubble sort: 1. Bandingkan nilai data ke-1 dan data ke-2 2. Jika data ke-1 lebih besar dari data ke-2 maka tukar posisinya 3. Kemudian data yg lebih besar tadi dibandingkan dengan data ke-3 4. Lakukan langkah nomer 2 hingga selesai. BUBBLE SORT ALGORITMA SORTING
  • 49.
    Contoh : Misalnyakita akan mengurutkan sebuah array A yang memiliki 3 elemen. Dalam urutan menaik, maka elemen pertama harus lebih kecil dari elemen terakhir. BUBBLE SORT ALGORITMA SORTING Langkah 1 : dimulai dengan mengakses indeks pertama dari array dan membandingkannya dengan indeks setelahnya ( indeks kedua ). Karena elemen pertama tidak lebih besar dari elemen kedua, maka tidak akan dilakukan pertukaran
  • 50.
    Kemudian dimulai kembalidengan membandingkan indeks kedua dengan indeks setelahnya ( indeks ketiga ). BUBBLE SORT ALGORITMA SORTING Karena elemen kedua lebih besar dari elemen ketiga, maka dilakukan pertukaran. Selanjutnya, dilakukan dengan aturan yang sama. Apabila nilai di suatu indeks lebih besar dari nilai di indeks setelahnya, maka pertukaran nilai akan dilakukan.
  • 51.
    BUBBLE SORT ALGORITMA SORTING Setelahdilakukan pembandingan sebanyak 5 kali, akhirnya didapatkan hasil pengurutan langkah pertama sebagai berikut.
  • 52.
    BUBBLE SORT ALGORITMA SORTING Langkah2: didapatkan hasil perbandingan sebagai berikut :
  • 53.
    BUBBLE SORT ALGORITMA SORTING Maka,setelah dilakukan pembandingan sebanyak 4 kali, akhirnya didapatkan hasil pengurutan langkah kedua sebagai berikut.
  • 54.
    BUBBLE SORT ALGORITMA SORTING Langkah3: didapatkan hasil pembandingan sebagai berikut : Maka, setelah dilakukan pembandingan sebanyak 3 kali, akhirnya didapatkan hasil pengurutan langkah ketiga sebagai berikut.
  • 55.
    BUBBLE SORT ALGORITMA SORTING Langkah4: didapatkan hasil pembandingan sebagai berikut : Maka, setelah dilakukan pembandingan sebanyak 2 kali, akhirnya didapatkan hasil pengurutan langkah ke-empat sebagai berikut.
  • 56.
    BUBBLE SORT ALGORITMA SORTING Langkah4: didapatkan hasil pembandingan sebagai berikut : Maka, setelah dilakukan pembandingan sebanyak 2 kali, akhirnya didapatkan hasil pengurutan langkah ke empat sebagai berikut.
  • 57.
    BUBBLE SORT ALGORITMA SORTING Langkah5: didapatkan hasil pembandingan sebagai berikut : Setelah dilakukan pembandingan sebanyak 1 kali, didapatkan hasil pengurutan langkah kelima sebagai berikut.
  • 58.
    BUBBLE SORT ALGORITMA SORTING Maka,pada akhirnya array dapat dipastikan terurut setelah langkah kelima dikerjakan.
  • 59.
    Berikut ini adalahKelebihan dan Kekurangan Algoritma Bubble Sort : BUBBLE SORT ALGORITMA SORTING KELEBIHAN : • Algoritma yang simpel. • Mudah untuk diubah menjadi kode. • Definisi terurut terdapat dengan jelas dalam algoritma. • Cocok untuk pengurutan data dengan elemen kecil telah terurut. KEKURANGAN : • Tidak efektif dalam pengurutan data berskala besar. • Langkah pengurutan yang terlalu panjang.
  • 60.
    Algoritma selection sortmerupakan pengurutan dengan konsep memilih elemen dengan nilai paling rendah dan menukar elemen tersebut dengan elemen ke i. Nilai dari i dimulai dari 1 ke n, yang dimana n merupakan jumlah total elemen dikurangi satu. Analogi algoritma selection sort : 1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. kemudian ditukar posisinya dengan data pertama. 2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan data kedua. 3. Mencari data terkecil dari data ketiga sampai data terakhir, kemudian ditukar posisinya dengan data ketiga. 4. Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang akan diurutkan, maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir, yaitu data ke n tidak perlu diurutkan karena hanya tinggal data satu-satunya. SELECTION SORT ALGORITMA SORTING
  • 61.
  • 62.
    SELECTION SORT ALGORITMA SORTING Contoh: Proses pengurutan menggunakan metode selection sort secara terurut nik adalah sebagai berikut:
  • 63.
    Algoritma pengurutan selectionsort ini termasuk algoritma sulit dibagi/ mudah digabung (hard split/easy join). Dari proses pengurutannya, Selection sort ini memiliki dua buah varian yaitu : 1. Maximum Sort Memilih data yang maksimum dari suatu kumpulan data larik, lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan. Data maksimum/minimum yang diperoleh, “diisolasi” dan tidak diikutsertakan pada proses pencarian data maksimum berikutnya. 2. Minimum Sort Memilih data yang minimum dari suatu kumpulan data larik , lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan. Data minimum yang diperoleh, “diisolasi” dan tidak diikutsertakan pada proses pencarian data minimum berikutnya. SELECTION SORT ALGORITMA SORTING
  • 64.
    Setiap metode pengerjaanpastilah memiliki kekurangan dan kelebihannya dalam prosesnya, seperti halnya lebih cepat namun tidak praktis ataupun lebih lama namun prosesnya sangat praktis. Begitupun dengan algoritma Selection Sort yang memiliki kekurangan dan kelebihan dalam proses pengerjaannya. SELECTION SORT ALGORITMA SORTING KELEBIHAN : a) Algoritma ini sangat rapat dan mudah untuk diimplementasikan. b) Mempercepat pencarian c) Mudah menentukan data maksimum /minimum. d) Mudah menggabungkannya kembali. e) Kompleksitas selection sort relatif lebih kecil. KEKURANGAN : a) Membutuhkan method tambahan b) Sulit untuk digabungkan kembali c) Perlu dihindari untuk penggunaan data lebih dari 1000 tabel, karena akan menyebabkan kompleksitas yang lebih tinggi dan kurang praktis
  • 65.
    INSERTION SORT ALGORITMA SORTING Algoritmainsertion sort merupakan suatu metode pengurutan data dengan melakukan penempatan setiap elemen data pada posisinya dengan membandingkan dengan data-data yang telah ada. Prinsip dari insertion sort adalah dengan membagi data yang akan diurutkan menjadi dua kelompok, satu kelompok yang belum diurutkan dan yang satunya lagi sudah diurutkan, Elemen yang pertama diambil dari kelompok list yang belum diurutkan dan kemudian ditempatkan sesuai posisinya pada bagian lain yang belum diurutkan. Analogi Algoritma insertion sort 1. Membandingkan data kedua dengan data kesatu 2. Apabila data ke dua lebih kecil maka tukar posisinya 3. Data ketiga dibandingkan dengan data kesatu dan kedua 4. Apabila data ketiga lebih kecil tukar lagi posisinya 5. Data keempat dibandingkan dengan data ketiga hingga kesatu 6. Apabila data keempat lebih kecil dari ketiga maka letakkan data keempat ke posisi paling depan 7. Begitu seterusnya hingga tidak ada lagi data yang dapat dipindahkan.
  • 66.
  • 67.
    INSERTION SORT ALGORITMA SORTING Contohtahap tahap insertion sort: Bagian biru abu abu ( 2 bilangan pertama ) sekarang dalam keadaan terurut secara relatif. Berikutnya, kita perlu menyisipkan bilang ketiga ( 4 ) kedalam bagian biru abu abu sehingga setelah penyisipan tersebut, bagian biru abu abu tetap dalam keadaan terurut secara relatif.
  • 68.
    INSERTION SORT ALGORITMA SORTING Caranya: Pertama : Ambil bilangan ketiga (4) Kedua : Geser bilangan kedua (10) sehingga ada ruang untuk disisipi. Ketiga : Sisipkan bilangan (4) ke posisi yang tepat.
  • 69.
    INSERTION SORT ALGORITMA SORTING Sekarangketiga bilangan sudah terurut secara relatif dan kita sisipkan bilangan keempat kepada tiga bilangan pertama tersebut. Setelah penyisipan, empat bilangan pertama haruslah sudah keadaan terurut secara relatif Ulangi proses tersebut sampai bilangan terakhir disisipkan
  • 70.
  • 71.
    Setiap metode pengerjaanpastilah memiliki kekurangan dan kelebihannya dalam prosesnya, seperti halnya lebih cepat namun tidak praktis ataupun lebih lama namun prosesnya sangat praktis. Begitupun dengan algoritma Insertion Sort yang memiliki kekurangan dan kelebihan dalam proses pengerjaannya. INSERTION SORT ALGORITMA SORTING KELEBIHAN : 1. Sederhana dalam penerapannya. 2. Sangat Efektif dalam data yang kecil. 3. Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort. 4. Sangat Efektif dalam data yang sebagian sudah terurut. 5. Lebih Efektif dibanding Bubble Sort dan Selection Sort. 6. Loop( pengulangan ) dalam pada Insertion Sort sangat cepat, sehingga membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit. ( stabil ) KEKURANGAN : a) Membutuhkan method tambahan b) Sulit untuk digabungkan kembali c) Perlu dihindari untuk penggunaan data lebih dari 1000 tabel, karena akan menyebabkan kompleksitas yang lebih tinggi dan kurang praktis
  • 72.
    MERGE SORT ALGORITMA SORTING Algoritmadirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort. - Divide : Memilah elemen – elemen dari rangkaian data menjadi dua bagian. - Conquer : Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif - Kombinasi : Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan 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.
  • 73.
    MERGE SORT ALGORITMA SORTING CaraKerja Merge Sort : Langkah pertama kita bagi menjadi 3 bagian susunan elemen data yaitu 4 dengan 7, 1 dengan 2 dan 9 dengan 5. Kemudian kita bandingkan elemen pertama yaitu 4 dan 7. Karena 4 sudah lebih kecil dari 7 maka posisi tetap.
  • 74.
    MERGE SORT ALGORITMA SORTING Kemudiankita bandingkan lagi elemen data ke 2 yaitu angka 1 dan 2. Karena angka 1 lebih kecil dari 2 maka posisi tetap Kemudian kita bandingkan elemen data ke 3 yaitu angka 9 dan 5. Karena angka 5 lebih kecil dari 9 maka posisi 9 ditukar dengan angka 5 Langkah selanjutnya adalah kita bandingkan angka pertama pada elemen pertama dengan elemen 2 dan elemen 3. Pertama kita bandingkan angka 4 dengan elemen 2 yaitu angka 1.
  • 75.
    MERGE SORT ALGORITMA SORTING Cekangka 4 dan 1. Lebih besar mana , karena angka 1 lebih dari angka 4 maka angka 1 akan menempati posisi baru di elemen pertama. Kemudian bandingkan angka 4 dengan 2. Cek lebih kecil mana antara angka 4 dan 2 ?
  • 76.
    MERGE SORT ALGORITMA SORTING Karenaangka 2 lebih kecil dari 4 maka angka 2 ke elemen baru di posisi ke 2.
  • 77.
    MERGE SORT ALGORITMA SORTING Kemudianbandingkan angka 4 dengan elemen ke 3 yaitu angka 5. Cek lebih kecil mana angka 4 dengan angka 5. Karena angka 4 lebih kecil dari 5 maka angka 4 menempati posisi ke 3.
  • 78.
    MERGE SORT ALGORITMA SORTING Lanjutke urutan angka ke 2 pada elemen pertama yaitu angka 7. Bandingkan angka 7 dan 5. Lebih kecil mana antara angka 7 dan 5. Karena angka 5 lebih kecil dari 7 maka angka 5 menempati posisi ke 4.
  • 79.
    MERGE SORT ALGORITMA SORTING Kemudianlangkah selanjutnya bandingkan angka 7 dengan angka 9. Lebih kecil mana antara angka 7 dan 9. Karena angka 7 lebih kecil dari angka 9 maka 7 menempati urutan ke 5. Karena angka 9 adalah angka terakhir maka angka 9 menempati posisi ke 6.
  • 80.
  • 81.
    Setiap metode pengerjaanpastilah memiliki kekurangan dan kelebihannya dalam prosesnya, seperti halnya lebih cepat namun tidak praktis ataupun lebih lama namun prosesnya sangat praktis. Begitupun dengan algoritma Merge Sort yang memiliki kekurangan dan kelebihan dalam proses pengerjaannya. MERGE SORT ALGORITMA SORTING KELEBIHAN : 1. Dibanding dengan algoritma lain, merge sort ini termasuk algoritma yang sangat efisien dalam penggunaannya sebab setiap list selalu dibagi bagi menjadi list yang lebih kecil, kemudian digabungkan lagi sehingga tidak perlu melakukan banyak perbandingan. 2. Cocok untuk sorting akses datanya lambat misalnya tape drive atau hard disk. 3. -Cocok untuk sorting data yang biasanya diakses secara sequentially (berurutan), KEKURANGAN : - Terlalu banyak menggunakan ruang pada memori. - Merge Sort membutuhkan lebih banyak ruang daripada jenis sorting lainnya.
  • 82.
    BONUS : QUICKSORT ALGORITMA SORTING Algoritma ini berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini hanya mengikuti langkah – langkah sebagai berikut : - Divide Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan. - Conquer Mengurutkan elemen pada sub-rangkaian secara rekursif. Pada algoritma quicksort, langkah ”kombinasi” tidak dilakukan karena telah terjadi pengurutan elemen – elemen pada sub-array.
  • 83.
    BONUS : QUICKSORT ALGORITMA SORTING
  • 84.
  • 85.
    DYNAMIC PROGRAMMING Dynamic Programming(biasa disingkat DP) adalah suatu teknik algoritma untuk memecahkan masalah dimana solusi optimal dari masalah tersebut dapat dipandang sebagai suatu deret keputusan. Pada umumnya dynamic programming digunakan untuk masalah optimisasi. Dimana suatu permasalahan memiliki banyak solusi. Setiap solusi memiliki nilai masing masing. Dan ingin ditemukan solusi dengan nilai yang optimum ( maksimal atau minimal ). Dynamic programming dapat dibagi menjadi empat tahap yang berurutan sebagai berikut : 1. Karakterisasi struktur pada solusi optimasi 2. Mendefinisikan nilai solusi optimal secara rekursif 3. Menghitung nilai solusi optimal pada model bottom-up 4. Menyusun solusi optimal dari informasi hasil perhitungan Langkah 1 sampai langkah 3 adalah dasar dynamic-programming dalam menemukan solusi untuk suatu problem, langkah ke-4 dapat dilakukan jika nilai solusinya optimal diperlukan.