Sobes.tech
Junior

Hash cədvəli hansı komponentlərdən ibarətdir?

sobes.tech Süni İntellekt

AI-dan cavab

Hash cədvəli iki əsas komponentdən ibarətdir:

  1. Array (və ya siyahı) hüceyrələrdən (kublar): Bu, əsas saxlama quruluşudur. Hər hüceyrə bir və ya bir neçə məlumat elementini (açar-dəyər cütləri) saxlaya bilər.

  2. Hash funksiyası: Giriş açarını ədədi indeksə çevirən algoritmdir, bu indeks istifadə edilərək müvafiq məlumat elementinin saxlanacağı və ya tapılacağı hüceyrə müəyyən edilir.

Bundan əlavə, toqquşmaları həll etmək üçün (fərqli açarların eyni indekse hash edilməsi halları), aşağıdakı mexanizmlər istifadə olunur:

  • Zəncir metodu: Hər hüceyrədə, həmin indeksə hash edilmiş elementlərin siyahısı (məsələn, əlaqəli siyahı) saxlanılır.
  • Açıq ünvanlama metodu: Toqquşma baş verdikdə, algoritm müəyyən strategiya ilə növbəti boş hüceyrəni axtarır (xətti axtarış, kvadrat axtarış, cüt hashləmə).
# Sadə hash funksiyası nümunəsi
def simple_hash(anahtar, array_olcusu):
    # Açarı ədədləşdirmək
    if isinstance(anahtar, str):
        hash_dəyəri = sum(ord(simvol) for simvol in anahtar)
    elif isinstance(anahtar, int):
        hash_dəyəri = anahtar
    else:
        raise TypeError("Dəstəklənməyən açar tipi")

    # Array ölçüsü daxilində indeks qaytarır
    return hash_dəyəri % array_olcusu

# Zəncir metodu üçün array hüceyrə komponenti nümunəsi
class HashTable:
    def __init__(self, olcusu):
        self.olcusu = olcusu
        self.array = [[] for _ in range(self.olcusu)] # Siyahılar arrayi (zəncirlər)

    def insert(self, anahtar, dəyər):
        indeks = simple_hash(anahtar, self.olcusu)
        self.array[indeks].append((anahtar, dəyər)) # Açar-dəyər cütlüyünü siyahıya əlavə et

    def search(self, anahtar):
        indeks = simple_hash(anahtar, self.olcusu)
        for k, v in self.array[indeks]:
            if k == anahtar:
                return v
        return None # Açar tapılmadı