Hash ve
Dictionary arasındaki fark nedir?
Komut dosyası arka planından geldiğimde, benzer olduklarını hissediyorum, ancak tam farkları öğrenmek istedim. Google çalışanları bana pek yardımcı olmadı.
Hash, programcının arayüzü uygulama ile karıştırdığı ( ve = tam adı yazmak için çok tembeldi, yani bir kısaltmaya başvurmak yerine
HashTable,
Hash).
Karma tablo one oldukça iyi erişim özellikleri sağlayan (çalışma zamanı açısından) böyle bir sözlüğün olası uygulamasıdır ve bu nedenle genellikle varsayılan uygulamadır.
Böyle bir uygulamanın iki önemli özelliği vardır:
(Bir anahtarın yıkanabilir olması, daha sonra bir dizide dizin olarak kullanılan bir anahtardan sayısal bir değer hesaplayabileceğimiz anlamına gelir.)
Sözlük veri yapısının tuşlara ordering empoze eden alternatif uygulamalar vardır - buna genellikle a sıralanmış sözlük denir (ve genellikle başka verimli uygulamalar olsa da bir arama ağacı).
Özetlemek gerekirse: a sözlük anahtarları değerlerle eşleştiren bir ADT'dir. Bu ADT'nin hash tablosu olan birkaç olası uygulaması vardır.
Hash yanlış adlandırmadır, ancak bağlamda karma tablo olarak uygulanan bir sözlüğe eşdeğerdir.
"Sözlük" kavramın adıdır. Bir karma tablo olası bir uygulamadır.
Sözlük, hızlı aramalar/eklemeler için kullanılan herhangi bir veri yapısı uygulaması için verilen toplu terimdir. Bu, karma tablo, atlama listeleri, rb ağacı vb.
A sözlük, bir ilişkilendirilebilir dizi öğesinin doğrudan içindeki değere başvurmak için bir anahtar kullanır.
yani
(KEY => VALUE)
A hash daha çok bellekte (veya daha kolay bir dizi) hesaplamak için hash işlevi kullanan bir hash tablos olarak tanımlanır. değer olacaktır. Karma, TUŞ'u girdi olarak alır ve çıktı olarak bir değer verir. Ardından bu değeri bellek veya dizi dizinine takın.
yani
KEY => HASH FUNCTION => VALUE
Sanırım biri doğrudan diğeri değil. Karma işlevleri de mükemmel olmayabilir ve bazen yanlış değere başvuran bir dizin sağlayabilir. Ancak bu düzeltilebilir.
Bakmak için en iyi yer: Wikipedia ( ilişkisel dizi ve karma tablosu )