(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·Î ÁÙ¿©³õ¾Ò´Ù.