Anahtarları hash fonksiyonuyla kovaya dönüştürerek ortalama sabit zamanlı sözlük işlemleri sağlar.
Aho kitabı hashing tekniğini dictionary işlemleri için ortalama sabit zaman sağlayan bir temsil olarak açıklar. İki temel yaklaşım vardır: open/external hashing kovaların listeler tuttuğu chaining modelidir; closed hashing ise elemanları bucket tablosunun içinde tutar.
DSA kaynağı unordered set implementasyonu için hash table kullanımını önerir; çünkü üyelik kontrolü ve ekleme hızlı olmalıdır. Performans, hash fonksiyonunun dağılımına, kova sayısına ve çakışma çözme stratejisine bağlıdır.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1class HashTable {2 private buckets: Array>; 3 constructor(size = 16) {4 this.buckets = Array.from({ length: size }, () => []);5 }6 set(key: string, value: string) {7 const bucket = this.buckets[this.hash(key)];8 const existing = bucket.find((entry) => entry[0] === key);9 if (existing) { existing[1] = value; } else { bucket.push([key, value]); }10 }11 get(key: string) {12 return this.buckets[this.hash(key)].find((entry) => entry[0] === key)?.[1];13 }14 private hash(key: string) {15 return [...key].reduce((sum, char) => sum + char.charCodeAt(0), 0) % this.buckets.length;16 }17}Komutları virgülle ayırın. Örnek: put:alice, put:carol, get:alice, remove:carol
Komutları virgülle ayırın. Örnek: put:alice, put:carol, get:alice, remove:carol
En İyi Durum: O(1)
Ortalama Durum: O(1)
En Kötü Durum: O(n)
O(n) - Çalışma süresi, giriş boyutu ile doğrusal olarak artar.
Hash Table Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: