Thread overview
Eşleme Tablosu Sıralamak
May 25, 2012
Salih Dinçer
May 25, 2012
Salih Dinçer
May 25, 2012
Salih Dinçer
May 25, 2012

Alıntı:

>
> import std.stdio, std.array;
>
> class ass_arr
> {
>     int[string] table;
>     string defaultKey;
>
>     this() { }
>
>     @property
>     auto setValue(int num)
>     {
>         table[defaultKey] = num;
>     }
>
>     @property
>     auto shadowTable()
>     {
>         return table;
>     }
> }
>
> void main()
> {
>     with(new ass_arr())
>     {
>         foreach(value; 0..10) {
>             defaultKey = replicate(".", value);
>             setValue(value);
>         }
>
>         int i;
>         foreach(key, value; shadowTable) {
>             write(i++,"->");
>             writeln(key, value);
>         }
>     }
> }
> ```

> **Çıktısı:**
> '0->0
> 1->..2
> 2->....4
> 3->......6
> 4->........8
> 5->.1
> 6->...3
> 7->.....5
> 8->.......7
> 9->.........9
> '
>
İlginç bir sıralama tekniği var. Sanırım Ali hocam yetkin cevap verecektir...:)

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
May 25, 2012

Alıntı (acehreli):

>

Eşleme tabloları bir hash table veri yapısıdır. Şimdi hemen gidip bu veri yapısını öğreniyorsun! ;)

Ali

İlahi hocam, bir cevabını saklıyorsun ya alacağın olsun...:)

http://www.enderunix.org/docs/hash-table.pdf

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 25, 2012

Eşleme tabloları bir hash table veri yapısıdır. Şimdi hemen gidip bu veri yapısını öğreniyorsun! ;)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 25, 2012

Teşekkürler hocam, bir kaç sayfa okudum da bizim daha önce tartıştığımız bağlı listelerden oluşan bir veri yapısıymış. Aslında hash olayına yabancı değilim. Bu konuda işlevler geliştirdim ama işin kuram (theory) tarafıyla hiç ilgilenmedim.

Kuramsal açıdan anahtarların (int[->keys<-]) çakışma olasılığı varmış. Ancak günümüz algoritmalarıyla bu çok küçükmüş. O yüzden her anahtar oluşturulurken çakışma olasılığı dikkate alınıyormuş; belli kollardaki yığılmalarda. Yine kuramsal açıdan değerlendirdiğimizde, harflerden oluşacak basit bir hash yapısı bile milyarlarca farklı anahtar demekmiş ama gereksiz hafıza kullanımını engellemek için kırpılan bir yapı söz konusuymuş. Tıpkı matematikteki gibi çarpma/bölme ve zincirleme gibi yöntemler var.

Dediğin gibi çok ayrıntı var. En iyisi mi biz D'ye elimizi verelim o bizi çeksin...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 25, 2012

Kusura bakma, vaktim olmadığı için uzun yazamadım. :)

Özetle, hash table sihirli bir veri yapısıdır. Normal durumlarda toplulukta kaç tane eleman bulunduğundan bağımsız olarak aranan elemanı tek işlemde bulur (yani O(1) karmaşıklık). Ayrıca eleman eklemek de O(1)'dir. Çok hızlı... Böyle bir hız kazancı sunabilmek için veriyi sıralama işi ile uğraşmaz.

Bazı şanssız durumlarda ise arama işlemi O(N) kadar kötü olabilir. (Yani örneğin tabloda 1000 eleman varsa aradığımız elemanı bulmak için en şanssız durumda 1000 işlem gerekebilir.) Şanssızlık, çok sayıda elemanın aynı göze rastlaması durumudur. O da hash function ile ilgili bir durumdur.

Çok ayrıntı var... :( Daha da özet: eşleme tabloları çok hızlı olabilmek adına sıralama ile ilgilenmezler.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]