LIMIT FUNGSI 🅰️LJ🅰️B🅰️R

31

1026

1

puspita.rn

puspita.rn

Comment

irfan
irfan

Saya akan memberikan contoh dua algoritma pencarian yang umum digunakan: **Linear Search** dan **Binary Search** dalam bahasa Python. Keduanya memiliki pendekatan berbeda, dan saya akan jelaskan secara singkat.

### 1. **Linear Search**
Linear Search adalah algoritma pencarian sederhana yang memeriksa setiap elemen dalam daftar satu per satu hingga menemukan elemen yang dicari atau hingga daftar habis.

```python
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i # Mengembalikan indeks elemen yang ditemukan
return -1 # Mengembalikan -1 jika elemen tidak ditemukan

# Contoh penggunaan
arr = [5, 2, 9, 1, 7, 6, 3]
target = 7
result = linear_search(arr, target)
if result != -1:
print(f"Elemen {target} ditemukan di indeks {result}")
else:
print(f"Elemen {target} tidak ditemukan")
```

**Penjelasan:**
- **Kompleksitas Waktu:** O(n), di mana n adalah panjang daftar.
- **Kegunaan:** Cocok untuk daftar kecil atau daftar yang tidak terurut.
- **Output Contoh:** Jika `target = 7`, output akan menjadi `Elemen 7 ditemukan di indeks 4`.

---

### 2. **Binary Search**
Binary Search adalah algoritma pencarian yang lebih efisien, tetapi membutuhkan daftar yang sudah **terurut**. Algoritma ini bekerja dengan membagi daftar menjadi dua bagian dan memeriksa bagian mana yang mungkin berisi elemen yang dicari.

```python
def binary_search(arr, target):
low = 0
high = len(arr) - 1

while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid # Mengembalikan indeks elemen yang ditemukan
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1 # Mengembalikan -1 jika elemen tidak ditemukan

# Contoh penggunaan
arr = [1, 2, 3, 5, 6, 7, 9] # Daftar harus terurut
target = 7
result = binary_search(arr, target)
if result != -1:
print(f"Elemen {target} ditemukan di indeks {result}")
else:
print(f"Elemen {target} tidak ditemukan")
```

**Penjelasan:**
- **Kompleksitas Waktu:** O(log n), jauh lebih cepat daripada Linear Search untuk daftar besar.
- **Kegunaan:** Cocok untuk daftar besar yang sudah terurut.
- **Output Contoh:** Jika `target = 7`, output akan menjadi `Elemen 7 ditemukan di indeks 5`.

---

### Catatan Tambahan:
- **Linear Search** tidak memerlukan daftar terurut, tetapi lambat untuk daftar besar.
- **Binary Search** lebih cepat, tetapi daftar harus diurutkan terlebih dahulu (jika belum terurut, Anda perlu mengurutkannya dengan algoritma seperti QuickSort atau MergeSort, yang menambah kompleksitas).
- Jika Anda ingin algoritma pencarian lain (misalnya, Jump Search, Interpolation Search) atau implementasi dalam bahasa lain, beri tahu saya!
- Jika Anda ingin visualisasi (misalnya, langkah demi langkah dalam bentuk grafik atau diagram), saya bisa menjelaskan prosesnya atau membantu membuat representasi sederhana di canvas.

Apa lagi yang bisa saya bantu?