(2) 2Áø Ž»ö
¼øÂ÷ Ž»öÀº °¡Àå ÀÌÇØÇϱ⠽¬¿î Ž»öÀÇ ¹æ¹ýÀÓ¿¡´Â Ʋ¸²¾ø´Ù.
±×·¯³ª µ¿½Ã¿¡ °¡Àå ´À¸° Ž»ö
¹æ¹ýÀÓ¿¡µµ Ʋ¸²¾ø´Ù. ±×·¯¸é º¸´Ù ºü¸¥ Ž»ö ¹æ¹ý¿¡´Â ¾î¶² °ÍÀÌ ÀÖÀ»±î?
ÀÌ ¾ê±â¸¦ Çϱâ Àü¿¡ °ÁÂ1¿¡¼ ¾ê±âÇÑ ¸íÇÔÀÇ °æ¿ì¸¦ ´Ù½Ã
»ý°¢ÇØ º¸ÀÚ. ¸íÇÔÀ» ãÀ» ¶§¿¡ ½ÇÁ¦
·Î ¾Õ¿¡¼ ¾ê±âÇÑ ¼øÂ÷Ž»öÀÇ ¹æ¹ýÀ¸·Î ã´Â »ç¶÷ÀÌ ÀÖÀ»±î? ¸¸ÀÏ ¸íÇÔÀÌ '°¡³ª´Ù'¼øÀ¸·Î
Á¤¸®µÇ
¾î ÀÖÁö ¾Ê´Ù¸é ¸ð¸£Áö¸¸ Á¤¸® µÇ¾î ÀÖ´Ù¸é Àû´çÇÑ À§Ä¡¸¦ ¤¾î¼ »ìÆì º¸°í,
´Ù½Ã Àû´çÇÑ À§Ä¡¸¦
»ìÆìº¸´Â ¹æ¹ýÀ» ÅÃÇÒ °ÍÀÌ´Ù.
°á±¹ ¼øÂ÷ÀûÀ¸·Î Á¤¸®µÇ¾î ÀÖ´Â ÀÚ·á¿¡ ´ëÇØ¼ Ç×»ó Áß°£°ª°ú
ºñ±³Çؼ ¾î´À ÂÊ¿¡ Á¸ÀçÇϴ°¡¸¦
ÆÇÁ¤ÇÏ´Â ½ÄÀÇ ¹æ¹ýÀ» »ç¿ëÇÏ´Â °ÍÀ»
2Áø Ž»öÀ̶ó°í ÇÑ´Ù.
ÀÌ ¹æ¹ýÀ» »ç¿ëÇϸé ÀÚ·áÀÇ °³¼ö°¡ ¸¹¾ÆÁü¿¡ µû¶ó¼ ¼øÂ÷Ž»ö¿¡
ºñÇØ »ç¿ëµÇ´Â ½Ã°£ÀÌ ÇöÀúÇϰÔ
Àý¾àµÈ´Ù.
ÀÌ ¹æ¹ýÀº ¾ÕÀÇ ¼øÂ÷ Ž»ö¿¡ ºñÇØ ´Ù¼Ò º¹ÀâÇØÁö´Â ¸éÀÌ
ÀÖÀ¸³ª, ±×´ÙÁö ¾î·ÆÁö´Â ¾Ê´Ù. ±¸Çö ¹æ
¹ýÀ¸·Î´Â ¿øÇÏ´Â °ªÀÌ Á¸ÀçÇÒ °ÍÀ¸·Î º¸ÀÌ´Â ¿µ¿ªÀÇ ¿ÞÂÊ À§Ä¡¿Í ¿À¸¥ÂÊ À§Ä¡¸¦ Áß°£°ª°ú
¿øÇÏ´Â
°ªÀÇ ºñ±³°á°ú¿¡ µû¶ó º¯È ½ÃÅ´À¸·Î½á ÀÌ·ç¾îÁø´Ù. (±×¸²3 ÂüÁ¶) ¾Æ·¡ÀÇ
¿¹´Â ¿À¸§Â÷¼øÀ¸·Î Á¤
¸®µÈ ÀÚ·á¿¡ ´ëÇÑ 2Áø Ž»ö ±¸ÇöÀÇ ¿¹ÀÌ´Ù.(¼øÂ÷Ž»ö°ú °°Àº °¡Á¤ÇÏ¿¡¼)

(¸®½ºÆ®3) 2Áø Ž»ö ¾Ë°í¸®Áò
int Binary_Search(int key,int a,int last_item)
{
int left_item,right_item;
int mid_item;
left_item=0;
right_item=last_item;
while (left_item<right_item)
{
mid_item=(left_item+right_item)/2;
if
(a[mid_item]<key)
left_item=mid_item;
else
right_item=mid_item;
}
if (a[left_item]==key)
return
left_item;
else
return
NOT_EXIST;
}
À§ÀÇ ¿¹¿¡ ´ëÇØ °£´ÜÈ÷ ¼³¸íÀ» µ¡ºÙÀÌÀÚ¸é, ÁÖ¾îÁø while
·çÇÎÀ» ºüÁ® ³ª¿À´Â °æ¿ì´Â left_item
ÀÇ °ªÀÌ right_item °ªÀ̳ª mid_itemÀÇ °ª°ú °°¾ÆÁú °æ¿ìÀÌ´Ù. µû¶ó¼, ±× ¾Æ·¡¿¡
³ª¿À´Â if ¹®
¿¡¼´Â ¾î´À °ªÀ» »ç¿ëÇÏ¿© ºñ±³ÇÏ¿©µµ »ó°ü¾øÁö¸¸, mid_item °ªÀ» »ç¿ëÇÏ¸é ¹®Á¦°¡
¹ß»ýÇÒ ¼ö
ÀÖ´Ù. Áï, last_itemÀÌ 0ÀÌ¾î¼ ·çÇÎÀ» °ÅÄ¡Áö ¾Ê´Â °æ¿ì¿¡´Â mid_item °ªÀÌ ¼³Á¤µÇ¾î
ÀÖÁö ¾ÊÀ¸
¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù.