๐งญ 1. Pengertian Algoritma
7
๐ Definisi
Algoritma adalah urutan langkah-langkah logis, sistematis, dan terbatas untuk menyelesaikan suatu masalah.
๐ง Narasi Konseptual
Dalam dunia pemrograman, algoritma ibarat resep masakan:
- Memiliki langkah yang jelas
- Menggunakan input tertentu
- Menghasilkan output yang diharapkan
Tanpa algoritma yang baik:
- Program bisa berjalan lambat
- Menggunakan memori berlebihan
- Sulit dikembangkan
๐ฏ 2. Karakteristik Algoritma
๐ Tabel Karakteristik
| Karakteristik | Penjelasan |
|---|---|
| Input | Memiliki nol atau lebih input |
| Output | Menghasilkan minimal satu output |
| Definiteness | Langkah jelas dan tidak ambigu |
| Finiteness | Berakhir dalam jumlah langkah terbatas |
| Effectiveness | Dapat dieksekusi secara nyata |
๐ง Penjelasan
Algoritma harus:
- Jelas (tidak ambigu)
- Efisien (tidak boros waktu/memori)
- Dapat diimplementasikan dalam program
๐ 3. Representasi Algoritma
7
๐น A. Flowchart
Diagram visual yang menggambarkan alur logika program.
๐น B. Pseudocode
Penulisan algoritma menggunakan bahasa semi-formal.
Contoh:
Mulai
Input angka
Jika angka > 0 maka tampilkan "Positif"
Selesai
๐น C. Bahasa Pemrograman
Implementasi langsung dalam kode (Python, C, Java, dll)
โ๏ธ 4. Analisis Algoritma
๐ Definisi
Analisis algoritma adalah proses untuk menentukan efisiensi algoritma dalam hal:
- Waktu eksekusi
- Penggunaan memori
๐ง Narasi
Tidak semua algoritma dengan hasil sama memiliki performa sama.
โก๏ธ Algoritma terbaik adalah yang paling efisien.
โฑ๏ธ 5. Kompleksitas Waktu (Time Complexity)
7
๐ Definisi
Ukuran waktu yang dibutuhkan algoritma berdasarkan ukuran input (n).
๐ Notasi Big-O
| Notasi | Nama | Contoh |
|---|---|---|
| O(1) | Konstan | Akses array |
| O(log n) | Logaritmik | Binary search |
| O(n) | Linear | Loop sederhana |
| O(n log n) | Linear-log | Merge sort |
| O(nยฒ) | Kuadratik | Bubble sort |
๐ง Narasi
- O(1) โ sangat cepat
- O(nยฒ) โ lambat untuk data besar
โก๏ธ Pemilihan algoritma sangat penting dalam aplikasi skala besar.
๐ Visualisasi Fungsi Kompleksitas
y=1,y=logn,y=n,y=nlogn,y=n2
Penjelasan:
- Kurva menunjukkan pertumbuhan waktu terhadap ukuran input
- Semakin curam kurva โ semakin tidak efisien
๐งฎ 6. Kompleksitas Ruang (Space Complexity)
๐ Definisi
Jumlah memori yang digunakan oleh algoritma selama eksekusi.
๐ Komponen Space Complexity
| Komponen | Penjelasan |
|---|---|
| Variabel | Penyimpanan data |
| Struktur data | Array, list, dll |
| Rekursi | Stack pemanggilan fungsi |
๐ง Narasi
Algoritma cepat belum tentu hemat memori.
โก๏ธ Harus ada keseimbangan antara waktu dan ruang.
๐ 7. Best Case, Worst Case, Average Case
๐ Tabel Perbandingan
| Kasus | Penjelasan |
|---|---|
| Best Case | Kondisi terbaik |
| Worst Case | Kondisi terburuk |
| Average Case | Rata-rata kondisi |
๐ง Contoh
Linear Search:
- Best: data ditemukan di awal โ O(1)
- Worst: data di akhir โ O(n)
๐ 8. Contoh Analisis Algoritma
๐ Contoh 1: Loop Sederhana
for i in range(n):
print(i)
โก๏ธ Kompleksitas: O(n)
๐ Contoh 2: Nested Loop
for i in range(n):
for j in range(n):
print(i, j)
โก๏ธ Kompleksitas: O(nยฒ)
๐ Contoh 3: Binary Search
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
โก๏ธ Kompleksitas: O(log n)
โ๏ธ 9. Perbandingan Efisiensi Algoritma
6
๐ง Narasi
Misalnya:
- Bubble Sort โ O(nยฒ)
- Merge Sort โ O(n log n)
โก๏ธ Untuk data besar, perbedaan sangat signifikan.
๐ 10. Hubungan Algoritma dan Struktur Data
๐ Konsep
Algoritma tidak bisa dipisahkan dari struktur data.
๐ง Narasi
- Struktur data menentukan bagaimana data disimpan
- Algoritma menentukan bagaimana data diproses
๐ Contoh:
- Binary Search hanya bisa digunakan pada array terurut
๐งช 11. Studi Kasus Nyata
๐ Kasus: Pencarian Data Mahasiswa
- Data kecil โ Linear Search cukup
- Data besar โ Binary Search lebih efisien
๐ 12. Ringkasan Materi
- Algoritma adalah langkah penyelesaian masalah
- Kompleksitas mengukur efisiensi algoritma
- Notasi Big-O digunakan untuk analisis
- Terdapat trade-off antara waktu dan memori
- Pemilihan algoritma sangat menentukan performa sistem
๐ 13. Latihan / Diskusi
โ๏ธ Soal Teori
- Jelaskan pengertian algoritma
- Apa itu kompleksitas waktu?
- Jelaskan perbedaan O(n) dan O(nยฒ)
๐ป Soal Praktikum
- Buat program pencarian linear
- Implementasikan binary search
- Bandingkan waktu eksekusi keduanya
๐ฏ Penutup
Pemahaman tentang algoritma dan kompleksitas sangat penting karena:
- Menentukan efisiensi program
- Digunakan dalam semua bidang IT
- Menjadi dasar optimasi sistem