1. Ž»ö(Searching) ¾Ë°í¸®Áò

 ¸¸ÀÏ ¿©·¯ºÐÀÌ ¸íÇÔÀ» Â÷°îÂ÷°î ¹Þ¾Æ¼­ ¸ð¾ÆµÎ¾ú´Ù°í ÇÏÀÚ.  È¤Àº Ä£±¸µéÀÇ ÀüÈ­¹øÈ£¸¦ ¼ö
ø¿¡ Àû¾îµÎ¾ú´Ù°í ÇÏÀÚ. ±×·±µ¥ ¾î´À³¯ ´©±º°¡¿¡°Ô ÀüÈ­¸¦ °É¾î¾ß ÇÒ ÀÏÀÌ »ý°å´Ù.  ¿©·¯ºÐ
Àº ÀüÈ­¹øÈ£¸¦ ã±â À§ÇØ ¸íÇÔÀ» ȤÀº ¼öøÀÇ ÀüÈ­¹øÈ£¸¦ µÚÁ®¾ß ÇÑ´Ù. ±×·¯¸é ¾î¶² ¹æ½ÄÀ¸
·Î ¿øÇÏ´Â ÀüÈ­¹øÈ£¸¦ ã¾Æ³¾ °ÍÀΰ¡?

(1) ¼øÂ÷ Ž»ö

 ÀÌ °°Àº ¹®Á¦¸¦  ÇذáÇÏ´Â °¡Àå  °£´ÜÇÑ ¹æ¹ýÀº  ¿ª½Ã '¼øÂ÷Ž»ö(Sequential  SearchingȤÀº
Linear Searching)'ÀÏ °ÍÀÌ´Ù. ¼øÂ÷Ž»öÀÇ  ¿ø¸®´Â ¾ÆÁÖ ÀÏ»óÀûÀÎ  °ÍÀ¸·Î °£´ÜÈ÷ ¾ê±âÇÏÀÚ¸é
¾Õ¿¡¼­ºÎÅÍ Â÷±ÙÂ÷±Ù Çϳª¾¿ ã¾Æ³ª°¡´Â °ÍÀ» ¾ê±âÇÑ´Ù. (±×¸²1 ÂüÁ¶)

 ¾Õ¿¡¼­ ¾ê±âÇÑ ¸íÇÔ °Ë»öÀÇ ¿¹·Î »ìÆìº½¸é ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù.

½ÃÀÛ
        While ¸íÇÔÀÌ ³²¾ÆÀÖÀ½ and ÇöÀç ¿øÇÏ´Â ¸íÇÔÀÌ ¾Æ´Ô)
                ´ÙÀ½ ¸íÇÔ
        If (¸íÇÔÀÌ ÀÖÀ½)
                ¸íÇÔÀ» ¹Ýȯ
        Else
                ¸íÇÔÀÌ ¾øÀ½À» ¹Ýȯ
³¡

 À§ÀÇ ¾Ë°í¸®ÁòÀ» C¾ð¾î¸¦ »ç¿ëÇÏ¿© ÇϳªÀÇ  ÇÔ¼ö·Î ±¸ÇöÇÏ´Ù¸é ´ÙÀ½°ú °°Àº Çü½ÄÀÌ  µÈ´Ù.
¾Æ·¡ÀÇ ¿¹¿¡¼­´Â  °Ë»öÀÇ ´ë»óÀÌ  µÇ´Â ÀÚ·á°¡  Á¤¼öÇüÀ̰í, ¹è¿­ÀÌ  a¿¡ ÀúÀåµÇ¾î  ÀÖÀ¸¸ç
NOT-EXIST´Â ¹Ì¸® Á¤ÀÇµÈ °ÍÀ¸·Î °¡Á¤ÇÏ¿´´Ù. ±×¸®°í, last-itemÀº ¹è¿­ÀÇ ¸¶Áö¸·À» Ç¥½ÃÇÏ
´Â Á¤¼ö´Ù. ÀÌÈÄÀÇ °Ë»öÀÇ ¿¹¿¡¼­µµ ÀÌ¿Í °°Àº °¡Á¤¿¡ ±Ù°ÅÇÑ´Ù.

(¸®½ºÆ®1) ¼øÂ÷ Ž»ö ¾Ë°í¸®ÁòÀÇ ±¸Çö ¿¹
int Linear_Search(int key,int *a,int last_item)
{
        int curr_item;

        curr_item=0;
        While ((curr_item<=last_item) && (a[curr_item] != key))
                curr_item++;
        if (curr_item<=last_item)
                return curr_item;
        else
                return NOT_EXIST;
}

 ÀÌ¿Í °°Àº ¼øÂ÷Ž»öÀÇ ¼öÇà ¼Óµµ¸¦ ¾à°£ Çâ»ó½ÃŰ´Â  ¹æ¹ýÀ¸·Î 'º¸ÃÊ(sentinel)'¸¦ ¼¼¿ì´Â ¹æ
¹ýÀÌ ÀÖ´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ¸é  ·çÇο¡¼­ ÇöÀç Ç׸ñÀÌ ¸¶Áö¸· Ç׸ñÀÎÁö¿¡  ´ëÇÑ °Ë»ç¸¦ ÇÒ
Çʿ䰡 ¾øÀ¸¹Ç·Î °Ë»ö ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö°¡ ÀÖ´Ù. ±¸Ã¼ÀûÀÎ ±¸Çö ¹æ¹ýÀº ¹è¿­ÀÇ ¸¶Áö¸· Ç×
¸ñÀÇ ´ÙÀ½¿¡ ã°íÀÚ ÇÏ´Â °ªÀ» ¹Ì¸® ³Ö¾î µÒÀ¸·Î½á ¿øÇÏ´Â Ç׸ñÀÌ ¾ø´Â °æ¿ì¿¡µµ ·çÇÎÀ» ºü
Á® ³ª¿Ã ¼ö ÀÖµµ·Ï ÇÑ °ÍÀÌ´Ù. ÀÌ¿Í °°ÀÌ ¹è¿­ÀÇ ¸¶Áö¸·À» ÁöŰ´Â °ªÀ» 'º¸ÃÊ'¶ó°í ºÎ¸¥´Ù(±×
¸²2 ÂüÁ¶).

(¸®½ºÆ® 2) º¸Ãʸ¦ »ç¿ëÇÏ´Â °³·®µÈ ¼øÂ÷ Ž»ö ¾Ë°í¸®Áò
int Advanced_Linear_Search(int key,int *a,int last_item)
{
        int curr_item;
        curr_item=0;
        a[n+1]=key;
        While (a[curr_item] != key)
                curr_item++;
        if (curr_item<=last_item)
                return curr_item;
        else
                return NOT_EXIST;
}

 ÀÌ¿Í °°ÀÌ º¸Ãʸ¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ´Ù¸¥ ¸¹Àº °æ¿ì¿¡ ÀÀ¿ëµÉ ¼ö ÀÖÀ¸¹Ç·Î ±â¾ïÇØ µÎ¸é  ÁÁ´Ù.
´Ü, ÀÌ ¹æ¹ýÀ» »ç¿ëÇÒ °æ¿ì¿¡ º¸Ãʸ¦ À§ÇÑ ¸Þ¸ð¸®¸¦ ¹Ì¸® ÇÒ´çÇÏ´Â °Í¿¡ ÁÖÀÇÇÏ¿©¾ß  ÇÑ´Ù.