Menu
Coddy logo textTech

Doğrusal Arama

Son güncelleme

Doğrusal arama (sıralı arama olarak da bilinir) en basit arama algoritmasıdır: ilk elemandan başlayın ve bir eşleşme bulana veya elemanlar bitene kadar her birini hedefle karşılaştırın. Veri hakkında hiçbir varsayımda bulunmaz — dizi sırasız olabilir ve elemanlar, eşitlik açısından karşılaştırılabilen herhangi bir şey olabilir.

Yukarıdaki animasyon, tarama soldan sağa ilerlerken her karşılaştırmayı vurgular ve hedef göründüğü anda durur. Basitliğinin bedeli hızdır: en kötü durumda her eleman kontrol edilir, bu yüzden O(n) sürede çalışır. Veri sıralıysa ikili arama aynı cevabı O(log n) sürede bulur — önce sıralı veriye ihtiyacınız varsa merge sort sayfasına bakın.

Zaman ve alan karmaşıklığı

DurumKarmaşıklıkNotlar
En iyi durumO(1)İlk eleman hedeftir.
Ortalama durumO(n)Ortalama olarak, bir eşleşmeden önce elemanların yarısı kontrol edilir.
En kötü durumO(n)Hedef sondadır — veya hiç yoktur.
AlanO(1)Yalnızca geçerli indeks tutulur.

Adım adım

AdımNe olur
1Dizinin ilk elemanı olan 0. indeksten başlayın.
2Geçerli elemanı hedef değerle karşılaştırın.
3Eşitlerse geçerli indeksi döndürün — bulundu.
4Aksi halde bir konum sağa ilerleyin ve tekrarlayın.
5Dizinin sonuna eşleşme olmadan ulaşılırsa hedef mevcut değildir (-1 döndürün).

Çözümlü örnek

[7, 3, 9, 1, 5, 8, 2] dizisinde 5 aranıyor:

KarşılaştırmaİndeksElemanSonuç
1077 ≠ 5 — taramaya devam.
2133 ≠ 5 — taramaya devam.
3299 ≠ 5 — taramaya devam.
4311 ≠ 5 — taramaya devam.
5455 = 5 — 4. indekste bulundu.

Doğrusal arama ne zaman kullanılmalı

Şu durumlarda kullanınŞu durumlarda kaçının
Veri sırasızsa veya sürekli değişiyorsaVeri sıralıysa — ikili arama üstel olarak daha hızlıdır
Koleksiyon küçükse ve basitlik kazanıyorsaVeri kümesi büyükse ve tekrar tekrar aranıyorsa
Yalnızca sıralı erişiminiz varsa (akışlar, bağlı listeler)O(1) aramalar için bir indeks veya hash tablosu kurabiliyorsanız

Linear Search kodu

Python, JavaScript, Java, C++, C, Pseudocode dillerinde temiz ve çalıştırılabilir bir Linear Search uygulaması. Bir dil seçin, kodu kopyalayın veya Coddy Playground'da hazır yüklenmiş olarak açın.

Python ile Linear Search kodu

Python
1def linear_search(a, target):2    # Scan left to right until the target appears3    for i in range(len(a)):4        if a[i] == target:5            return i6    return -17
8
9nums = [7, 3, 9, 1, 5, 8, 2]10print("Index of 5:", linear_search(nums, 5))11print("Index of 4:", linear_search(nums, 4))
Bu kodu Python Playground'da çalıştır

Doğrusal Arama SSS

Doğrusal aramanın zaman karmaşıklığı nedir?
Ortalama ve en kötü durumda O(n) — tarama her elemanı ziyaret etmek zorunda kalabilir — ve ilk eleman hedef olduğunda en iyi durumda O(1). O(1) ek alan kullanır.
Doğrusal arama sıralı veri gerektirir mi?
Hayır — bu onun temel avantajıdır. Doğrusal arama tamamen sırasız veride çalışır, çünkü her elemanı eşitlik açısından kontrol eder; sıranın hiçbir önemi yoktur. Buna karşılık ikili arama yalnızca sıralı dizilerde çalışır.
Doğrusal arama ne zaman ikili aramadan daha iyidir?
Veri sırasızsa ve yalnızca bir kez aranıyorsa (önce sıralamak O(n log n) tutar), koleksiyon çok küçükse veya akış ya da bağlı liste gibi yalnızca sıralı erişiminiz varsa. Sıralı dizilerde tekrarlanan aramalar için ikili arama kazanır.
Doğrusal arama ile sıralı arama aynı şey midir?
Evet — iki isim de aynı algoritmayı tanımlar: hedef bulunana veya koleksiyon bitene kadar elemanları sırayla taramak.
Doğrusal arama ortalama kaç karşılaştırma yapar?
Hedef mevcutsa ve her yerde olma olasılığı eşitse, ortalama yaklaşık n/2 karşılaştırma; hedef yoksa tam olarak n. Bu doğrusal büyüme, adının doğrusal arama olmasının nedenidir.
Coddy programming languages illustration

Coddy ile algoritmalarda ustalaş

BAŞLA