(3) ÇØ½Ì(Hashing)

 ¾Õ¿¡¼­ ¾ê±âÇÑ 2ÁøÅ½»öÀº »ó´çÈ÷ ºü¸£°Ô ¿øÇÏ´Â °ª¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀÌ´Ù. ±×·¯³ª, º¸´Ù ºü¸£°Ô
Ž»öÇÒ¼ö ÀÖ´Â ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù. ÀÌ ¹æ¹ýÀº 'ÇØ½Ì(Hashing)' ȤÀº 'ºÐ»ê ±â¾ï¹ý(Scatter Storage
Technique)'À̶ó°í ºÒ¸®¿ì´Âµ¥, ½ÇÁ¦ÀûÀ¸·Î °¡Àå ºü¸¥ Ž»öÀ» Á¦°øÇÑ´Ù.

 ¾Õ¼­ÀÇ ¸íÇÔÀÇ ¿¹¸¦ ´Ù½Ã Çѹø »ý°¢ÇØ º¸ÀÚ. ¸íÇÔÀ» º¸°üÇÏ´Â °æ¿ì,  ´ëºÎºÐÀÇ »ç¶÷µéÀº ¸íÇÔøÀ»
ÀÌ¿ëÇÑ´Ù. ¸íÇÔø¿¡´Â ¸íÇÔÀÌ ½ÃÀ۵Ǵ ù ¹øÂ°ÀÇ ÀÚÀ½À» ³ªÅ¸³»´Â Ç¥Áö°¡ ´Þ·ÁÀÖ´Ù. µû¶ó¼­, ¿ì
¸®´Â ¾Õ¼­ÀÇ 2Áø Ž»öÀ» »ç¿ëÇÏÁö ¾Ê°íµµ, ã°íÀÚÇÏ´Â ¸íÇÔÀÌ ÀÖ´Â À§Ä¡¿¡ »ó´çÈ÷ °¡±îÀÌ ´Ù°¡°¥
¼ö ÀÖ´Ù. ÀÌ¿Í °°ÀÌ ¿øÇÏ´Â ¸íÇÔÀÌ ÀÖÀ» À§Ä¡·Î ¿Å°Ü°£ ´ÙÀ½¿¡ ¼øÂ÷Ž»öÀ̳ª ȤÀº 2Áø Ž»öÀ» »ç
¿ëÇÏ¸é ¾Õ¼­ÀÇ ¹æ¹ýº¸´Ù ÈξÀ ºü¸£°Ô ãÀ» ¼ö°¡ ÀÖ°Ô µÈ´Ù.

 ÀÌ ¹æ¹ýÀÌ ºü¸¥ °Ë»öÀ» Á¦°øÇÏ´Â ÀÌÀ¯´Â ´Ü¼øÇÏ´Ù. Áï, °Ë»öÇÒ ÀÚ·á°¡ º¸´Ù Àß  Á¤¸®°¡ µÇ¾î ÀÖ±â
¶§¹®ÀÌ´Ù. ´Ù½Ã ¸»Çϸé, µ¥ÀÌÅÍÀÇ °ª¿¡ µû¶ó ÀúÀåµÇ¾î¾ß ÇÒ °ø°£ÀÌ ¹Ì¸® ÁöÁ¤µÇ¾î Àֱ⠶§¹®ÀÌ´Ù.
ÀÌ ¹æ¹ý¿¡¼­ ÀÚ·áÀÇ °ª¿¡ µû¶ó ÀúÀåÇÒ °ø°£À» °áÁ¤ÇÏ´Â ÇÔ¼ö¸¦ 'ÇØ½ÌÇÔ¼ö'¶ó°í ºÎ¸£°í, ÇØ½ÌÇÔ¼ö¸¦
»ç¿ëÇϴ Ž»ö¹æ¹ýÀ» ÇØ½ÌÀ̶ó°í ÇÑ´Ù.

 ÀϹÝÀûÀ¸·Î ÇØ½Ì¹æ¹ýÀº »ç¿ëÇÏ´Â ÇØ½ÌÇÔ¼ö¿¡ µû¶ó¼­, ±×¸®°í ÇØ½ÌÇÔ¼ö¿¡ ÀÇÇØ °°Àº °ªÀÌ ³ª¿À´Â
(Áï, °°Àº ÀúÀå ¿µ¿ª¿¡ Á¸ÀçÇÏ´Â -  ¸íÇÔÀÇ ¿¹¿¡¼­´Â °°Àº ÀÚÀ½À¸·Î ½ÃÀÛÇÏ´Â)ÀڷḦ  ¾î¶»°Ô º¸
°üÇÒ °ÍÀΰ¡¿¡ µû¶ó¼­ ±¸ºÐµÉ ¼ö°¡ ÀÖ´Ù.

 ÇؽÌÀ» »ç¿ëÇÏ¿© °Ë»öÇÏ´Â ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾îº¸¸é, ±×¸²  4¿Í °°ÀÌ Á¤¼öÇü ÀÚ·á°¡ 5·Î ³ª´« ³ª
¸ÓÁö¿¡ µû¶ó¼­ Á¤¸®µÇ¾î ÀÖ°í, ±× ÀÚ·á°¡ ¿¬°áµÈ ¸®½ºÆ®(list)ÀÇ ÇüÅ·ΠÀúÀåµÇ¾î ÀÖ´Ù°í ÇÏÀÚ.

 ±×·¸´Ù¸é ¿øÇÏ´Â °ª¿¡ ´ëÇÑ °Ë»öÀ» À§ÇÑ ·çƾÀº ´ÙÀ½°ú °°ÀÌ ±¸ÇöµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
 
(¸®½ºÆ® 4) ÇØ½Ì°ú ¼øÂ÷Ž»öÀ» °°ÀÌ »ç¿ëÇÑ Å½»ö ¾Ë°í¸®ÁòÀÇ ¿¹
typedef struct DATALIST
{
        int data;
        struct DATALIST *next;
} *DATAPTR;

DATAPTR Hash_Search(int key,DATAPTR *a)
{
        DATAPTR b;

        b=a[key%5];         /*ÇØ½ÌÀÌ »ç¿ëµÈ °÷*/
        while (b!=NULL)
        {
                if (key==(b->data))
                        return b;
                b=b->next;
        }
        return NULL;
}

 À§ÀÇ ÇÔ¼ö´Â ¾ÕÀÇ ¿¹¿Í´Â ´Þ¸® ¿øÇÏ´Â °ªÀ» °Ë»öÇÏÁö ¸øÇßÀ» °æ¿ì NULL°ªÀ» ¹ÝȯÇÏ°Ô µÈ´Ù´Â
°Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. ¸®½ºÆ® 4ÀÇ ¿¹¿¡¼­´Â ÇØ½ÌÀÌ »ç¿ëµÈ °æ¿ì´Â ÇѹøÀÇ ÇØ½ÌÀ¸·Î °Ë»öÇÒ ´ë»ó
À» 1/5·Î  ÁÙ¿©³õ¾Ò´Ù.