En Basit Arama Algoritması
Lineer Arama (Linear Search), bir dizide aranan elemanı bulmak için baştan sona tüm elemanları tek tek kontrol eden en basit arama algoritmasıdır.
O(1)
Aranan eleman ilk sırada
O(n/2) = O(n)
Ortalama ortada bulunur
O(n)
Sonda veya hiç yok
Sadece birkaç değişken kullanır (i, target). Ek bellek gerekmez.
def linear_search(arr, target):
"""
Lineer Arama Algoritması
Args:
arr: Aranacak dizi
target: Aranan değer
Returns:
Bulunursa indeks, bulunamazsa -1
"""
for i in range(len(arr)):
print(f"Adım {i+1}: arr[{i}] = {arr[i]}", end="")
if arr[i] == target:
print(f" ✅ BULUNDU!")
return i
else:
print(f" ❌ {arr[i]} ≠ {target}")
print("Eleman dizide bulunamadı!")
return -1
# Test
dizi = [64, 34, 25, 12, 22, 11, 90, 45]
print(f"Dizi: {dizi}")
print(f"Aranan: 22\n")
sonuc = linear_search(dizi, 22)
print(f"\nSonuç: İndeks = {sonuc}")
print("\n" + "="*50)
print("Olmayan bir eleman arayalım:")
print(f"\nAranan: 100\n")
sonuc2 = linear_search(dizi, 100)
print(f"\nSonuç: {sonuc2} (bulunamadı)")
def find_all(arr, target):
"""Tüm eşleşen indeksleri döndürür"""
indices = []
for i in range(len(arr)):
if arr[i] == target:
indices.append(i)
return indices
# Test
dizi = [5, 3, 7, 3, 8, 3, 2, 3]
print(f"Dizi: {dizi}")
print(f"Aranan: 3")
sonuclar = find_all(dizi, 3)
print(f"Bulunan indeksler: {sonuclar}")
print(f"Toplam {len(sonuclar)} adet bulundu!")
def find_min_max(arr):
"""Dizideki minimum ve maksimum değerleri bulur"""
if len(arr) == 0:
return None, None
min_val = arr[0]
max_val = arr[0]
for i in range(1, len(arr)):
if arr[i] < min_val:
min_val = arr[i]
if arr[i] > max_val:
max_val = arr[i]
return min_val, max_val
# Test
dizi = [64, 34, 25, 12, 22, 11, 90, 45]
print(f"Dizi: {dizi}")
minimum, maksimum = find_min_max(dizi)
print(f"Minimum: {minimum}")
print(f"Maksimum: {maksimum}")