Bölüm 3 · Simülasyon

Hash ve Ara Değer Arama

← Bölüm 3

Hash tablosunda arama h(k) = k mod 8

Zincirleme: her kova bir anahtar listesi tutar.

Ara değer arama sıralı dizi

pos = lo + ⌊(x − A[lo]) · (hi − lo) / (A[hi] − A[lo])⌋

    Hash ve Ara Değer Arama

    Basit bir hash tablosunda kova aramasını, sıralı bir sayı dizisinde ara değer aramayla karşılaştırın.

    Kullanım

    • Hash tablosu: bir anahtar girin ve Bul'a basın. h(k) = k mod 8 kovası vurgulanır ve zinciri soldan sağa taranır. Ekle yeni bir anahtarı kendi zincirinin sonuna ekler (çakışma oluşturmak için); Sıfırla başlangıçtaki tabloyu geri getirir.
    • Ara değer arama: bir hedef girin; yoklamaları canlandırmak için Ara'ya, birer yoklama ilerlemek için Adım'a basın. Gölgeli hücreler o anki [lo, hi] aralığıdır. Yeni Dizi yeni bir sıralı dizi üretir (bazen düzgün dağılımlı, bazen çarpık).

    Hash ile arama

    Hash fonksiyonu bir anahtarı doğrudan bir kovaya eşler. İyi bir hash fonksiyonu ve α = n / m yük faktörüyle zincirlemeli tabloda arama ortalama O(1 + α) sürer; en kötü durumda (bütün anahtarlar tek kovada) O(n)'dir.

    Ara değer arama

    Her zaman ortayı yoklamak yerine x'in konumunu aralığın uçlarındaki değerlerden tahmin eder:

    pos = lo + ⌊(x − A[lo]) · (hi − lo) / (A[hi] − A[lo])⌋

    Düzgün dağılımlı sıralı veride ortalama O(log log n) yoklama gerekir; çarpık veride O(n)'ye kadar kötüleşebilir. Buna karşılık ikili arama her zaman O(log n) yoklama gerektirir.