Sobes.tech
Junior

Hash jadvali qanday ishlash prinsipi?

sobes.tech AI

AIdan javob

Hash jadvali (yoki assotsiativ massiv) "kalit-qiymat" juftlarini saqlaydi. Ishlash prinsipi hash funktsiyasidan foydalanishga asoslangan bo'lib, u kalitni raqamli indeksga (hash) aylantiradi va bu indeks qiymatning saqlash joyini ko'rsatadi.

Qadamlar:

  1. Hash hisoblash: Berilgan kalit uchun hash hisoblanadi.
    <?php
    $key = "example";
    $hash = crc32($key); // Oddiy hash funktsiyasi misoli
    
  2. Indeks aniqlash: Hash odatda massivning o'lchamiga bo'linadi (modul operatsiyasi yordamida).
    <?php
    $arraySize = 10;
    $index = $hash % $arraySize;
    
  3. Kosaga kirish: Hisoblangan indeks yordamida massivdagi mos keladigan kosaga kirish.
  4. Kolliziyalarni hal qilish: Turli kalitlar bir xil hashga ega bo'lishi mumkin (kolliziya), shuning uchun kosalar bir nechta "kalit-qiymat" juftlarini saqlashi mumkin. Kolliziyalarni hal qilish uchun turli usullar qo'llaniladi:
    • Chaining (zanjirlash): Har bir kosada "kalit-qiymat" juftlarining ro'yxati saqlanadi.
    • Ochiq manzil (Open Addressing): Kolliziya bo'lsa, bo'sh hujayrani qidirish uchun takroriy qidiruv amalga oshiriladi (lineer, kvadrat, ikki marta hash qilish).

Amallar:

  • Qo'shish: Kalitning hash qiymati hisoblanadi, indeks aniqlanadi va "kalit-qiymat" jufti mos kosaga joylashtiriladi. Kolliziya bo'lsa, ro'yxatga qo'shiladi yoki bo'sh joy qidiriladi.
  • Qidirish: Kalitning hash qiymati hisoblanadi, indeks aniqlanadi. Mos kosada kalit bo'yicha qiymat qidiriladi. Chaining usulida ro'yxat elementlari tekshiriladi; ochiq manzil usulida ketma-ket qidiruv amalga oshiriladi.
  • O'chirish: Kalitning hash qiymati hisoblanadi, indeks aniqlanadi. Mos kosada, kalit bo'yicha juftlik topiladi va o'chiriladi.

Afzalliklari:

  • Elementlarga tez kirish (o'rtacha O(1)).
  • Xotira samarali ishlatiladi.

Kamchiliklari:

  • Kolliziyalar ko'p bo'lsa, ishlash tezligi pasayishi mumkin.
  • Jadval o'lchami optimallashtirishni talab qilishi mumkin (rehashing).