İçeriğe geç
Educora
Orta8–10. sınıf16 dk27 / 59

Arama algoritmaları

Doğrusal ve ikili aramanın nasıl çalıştığını öğren, hızlarını karşılaştır ve ikili aramanın neden sıralı bir liste gerektirdiğini gör.

Kendini test et
Bu derste öğreneceklerin
  • Doğrusal aramayı açıklamak ve uygulamak
  • Sıralı bir listede ikili aramayı adım adım uygulamak
  • Her yöntemin kaç karşılaştırma gerektirdiğini tahmin etmek

Murad 1 ile 100 arasında bir sayı tutuyor, Aysel de onu bulmalı. Her tahminden sonra Murad yalnızca “daha büyük”, “daha küçük” ya da “doğru” diyor. Aysel 1, 2, 3… diye sırayla sorarsa 100 tahmin gerekebilir. Ama 50'den başlayıp her seferinde aralığı ikiye bölerse sayıyı en fazla 7 tahminde bulur. Bu iki yaklaşım iki ünlü algoritmadır: doğrusal arama ve ikili arama.

Doğrusal arama

Doğrusal (sıralı) aramada listenin elemanları ilkinden başlayarak tek tek aranan değerle karşılaştırılır. Eşleşen eleman bulununca arama durur; listenin sonuna gelip bulamazsak bu eleman listede yoktur.

Doğrusal aramanın avantajı basitliğidir: her listede, sıralı olmasa bile çalışır. Dezavantajı ise yavaşlığıdır: n elemanlı bir listede en kötü durumda n karşılaştırma gerekir.

Örnek: doğrusal arama

[7, 3, 23, 9, 15] listesinde 23 sayısını doğrusal aramayla bul.

Çözümü göster
1. karşılaştırma: 7 ≠ 23 → devam.
2. karşılaştırma: 3 ≠ 23 → devam.
3. karşılaştırma: 23 = 23 → bulundu!
Eleman listenin 3. sırasındadır (programlamada numaralandırma 0'dan başladığı için indeksi 2'dir). Toplam 3 karşılaştırma gerekti.
Python
def linear_search(items, target):
    for i in range(len(items)):
        if items[i] == target:
            return i
    return -1

numbers = [7, 3, 23, 9, 15]
print(linear_search(numbers, 23))
print(linear_search(numbers, 4))
▸ Beklenen çıktı
2
-1
Fonksiyon elemanın indeksini, eleman listede yoksa -1 döndürür.
Etkileşimli
Simülasyon yükleniyor…
Doğrusal aramayı adım adım izle: her adımda yalnızca bir eleman kontrol edilir.

İkili arama

İkili arama yalnızca sıralı (örneğin küçükten büyüğe dizilmiş) bir listede çalışır ama çok hızlıdır. Her adımda aranan değer aralığın ortasındaki elemanla karşılaştırılır ve listenin yarısı bir anda elenir.

  1. 1
    Ortayı bul

    Arama aralığının ortasındaki elemanı al.

  2. 2
    Karşılaştır

    Ortadaki eleman aranan değere eşitse eleman bulunmuştur, arama biter.

  3. 3
    Yarısını ele

    Aranan değer ortadaki elemandan küçükse sol yarıda, büyükse sağ yarıda aramaya devam et.

  4. 4
    Tekrarla

    Eleman bulunana ya da aralık boşalana kadar 1–3. adımları tekrarla. Aralık boşsa eleman listede yoktur.

Örnek: ikili arama

Sıralı [3, 8, 12, 17, 23, 31, 37, 42, 50] listesinde 37'yi ikili aramayla bul. Elemanların indeksleri 0'dan 8'e kadardır.

Çözümü göster
1. adım: aralık 0–8, orta indeks (0 + 8) : 2 = 4, eleman 23. 37 > 23 → sağ yarı kalır: indeksler 5–8.
2. adım: orta indeks (5 + 8) : 2 = 6 (tam kısmı), eleman 37. 37 = 37 → bulundu!
Yalnızca 2 karşılaştırma gerekti. Doğrusal arama ise 7 karşılaştırma yapardı.
Etkileşimli
Simülasyon yükleniyor…
İkili aramada arama aralığının her adımda nasıl yarıya indiğini izle.
Python
def binary_search(items, target):
    low, high = 0, len(items) - 1
    steps = 0
    while low <= high:
        mid = (low + high) // 2
        steps += 1
        if items[mid] == target:
            return mid, steps
        elif items[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1, steps

numbers = [3, 8, 12, 17, 23, 31, 37, 42, 50]
print(binary_search(numbers, 37))
print(binary_search(numbers, 5))
▸ Beklenen çıktı
(6, 2)
(-1, 3)
Fonksiyon, indeksi ve karşılaştırma sayısını döndürür. 5 sayısı listede yoktur: 3 adımdan sonra aralık boşalır.

Hangisi daha hızlı?

İkili aramada her karşılaştırma listeyi yarıya indirir; bu yüzden liste iki katına çıkınca yalnızca bir karşılaştırma eklenir. Büyük listelerde fark şaşırtıcıdır:

Eleman sayısıDoğrusal aramaİkili arama
10104
1001007
1000100010
1.000.0001.000.00020
En kötü durumda karşılaştırma sayısı

Önemli noktalar

  • Doğrusal arama elemanları tek tek kontrol eder ve her listede çalışır.
  • n elemanlı listede doğrusal arama en kötü durumda n karşılaştırma yapar.
  • İkili arama yalnızca sıralı listede çalışır ve her adımda aralığı yarıya böler.
  • İkili arama 1000 eleman için en fazla 10, bir milyon eleman için 20 karşılaştırma yapar.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
İkili arama için hangi koşul zorunludur?