(3) »ðÀÔ Á¤·Ä¹ý(Insertion Sorting)

 »ðÀÔ Á¤·Ä ¹æ¹ýµµ n°³ÀÇ Å¶°ª¿¡  ´ëÇÏ¿© n-1´Ü°è·Î ³ª´©¾îÁ® ¼öÇàµÈ´Ù.  ¹öºí Á¤·Ä°ú ´Ù¸¥ Á¡Àº
i¹øÂ° ´Ü°è¿¡¼­´Â ¾Õ¿¡¼­ºÎÅÍ i°³ÀÇ Å°°¡ ÀÌ¹Ì Á¤·ÄµÇ¾î ÀÖÀ¸¸ç i+1¹øÂ° À§Ä¡¿¡ Àִ Ű¸¦ »ðÀÔŰ
·Î ÇÏ¿© »ðÀÔŰ ¾Õ¿¡ Àִ Űµé°ú ºñ±³¸¦ ¼öÇàÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ °úÁ¤¿¡¼­ i+1¹øÂ°ÀÖ´Â »ðÀÔŰ´Â
Àڽź¸´Ù ÀÛÀº ۰ªÀ» ¹ß°ßÇÒ ¶§±îÁö ¾Õ¿¡ Àִ ŰµéÀ» Â÷·Ê·Î ºñ±³ÇÏ¿©  Àڽź¸´Ù Å« ۵éÀ» µÚ
·Î À̵¿½ÃŲ´Ù. ±×·¯¸é ´ÙÀ½°ú °°Àº ¿¹¸¦ »ý°¢ÇØ º¸ÀÚ.



 À§¿¡¼­ »ðÀÔŰ 5¾Õ¿¡ ÀÖ´Â 4°³ÀÇ Å°¸¦ Æ÷ÇÔÇÏ´Â ¸®½ºÆ®´Â ÀÌ¹Ì Á¤·ÄµÇ¾î ÀÖÀ¸¸ç  Å°°ª 5´Â 8°ú
ºñ±³ÇÏ¿© 8ÀÌ Å©¹Ç·Î 8À» µÚ·Î À̵¿Çϰí, ´ÙÀ½À¸·Î  7°ú ºñ±³ÇÏ¿© 7ÀÌ Å©¹Ç·Î 7À» µÚ·Î  À̵¿ÇÑ´Ù.
´ÙÀ½¿¡ 4¿Í ºñ±³ÇÒ ¶§ 4°¡ 5º¸´Ù ÀÛÀ¸¹Ç·Î ºñ±³ÇÏ´Â °ÍÀ» ¸ØÃß°í 4´ÙÀ½ À§Ä¡¿¡ 5¸¦ µÎ¸é, 2, 4, 5,
7, 8ÀÇ 5°³ÀÇ Å°°ªÀ» °®´Â ¸®½ºÆ®°¡ Á¤·ÄµÈ´Ù. µû¶ó¼­ »ðÀÔ Á¤·Ä¿¡¼­ ÀÌ·¯ÇÑ ´Ü°è¸¦  n-1¹ø ¹Ýº¹
Çϸé Àüü ¸®½ºÆ®ÀÇ Á¤·ÄÀÌ ¿Ï·áµÈ´Ù.

 »ðÀÔ Á¤·Ä¿¡¼­ »ðÀÔ۰¡ Á¤·ÄµÈ ¸®½ºÆ®ÀÇ Ã¹  ¿ø¼Òº¸´Ù ´õ ÀÛÀº °æ¿ì¿¡´Â ¸®½ºÆ®ÀÇ ¹üÀ§  ¹ÛÀÇ ¿ø
¼Ò¿Í ºñ±³¸¦ ½ÃµµÇÒ ¼ö ÀÖÀ¸¹Ç·Î À̸¦ ¹æÁöÇϱâ À§ÇÏ¿© ÇÁ·Î±×·¥ ÀÛ¼º½Ã Ç×»ó ºñ±³µÇ´Â ۰¡ ¸®½º
Æ®ÀÇ Ã¹ ¿ø¼ÒÀΰ¡¸¦ È®ÀÎÇÏ´Â ·çƾÀ» Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ºñ±³¸¦ ¼öÇàÇÏ´Â ´ë½Å ¸®½ºÆ®ÀÇ ¸Ç
¾Õ¿¡ ¾ÆÁÖ ÀÛÀº °ª -¡Ä¸§ ¸ÕÀú ÀúÀåÇÏ°í »ðÀÔ Á¤·ÄÀ» ¼öÇàÇϸé ÀÌ·¯ÇÑ ºñ±³¿¡ µû¸¥ ½Ã°£ Áöü¸¦
ÁÙÀϼö ÀÖ´Ù. º¸Á¶ °ø°£¿¡ -¡Ä¸¦ ¸ÕÀú ÀúÀåÇÑ ÈÄ Á¤·ÄÀ» ¼öÇàÇÏ´Â ¿¹´Â ±×¸² 5¿Í °°ÀÌ ³ªÅ¸³¾ ¼ö
ÀÖ´Ù.



 ÀÌ·¯ÇÑ °úÁ¤À» C ÇÁ·Î±×·¥À¸·Î ³ªÅ¸³»¸é ¸®½ºÆ® 8°ú °°´Ù.

(¸®½ºÆ® 8) »ðÀÔ Á¤·Ä
#define      MAXINT    30000

void Insertion(int n)
{
        int i,j,r;
        key[0]=-MAXINT;
        for (i=2;i<=n;i++)
        {
                j=i-1;
                r=key[i];
                while (r<key[j])
                {
                        key[j+1]=key[j];
                        j=j-1;
                }
                key[j+1]=r;
        }
}

»ðÀÔ Á¤·ÄÀÇ ºÐ¼®
 ¸®½ºÆ® 8ÀÇ Insertion¿¡¼­ ÃÖ¾ÇÀÇ °æ¿ì´Â ¸Å´Ü°è¿¡¼­ »ðÀÔÇÏ·Á´Â Ŷ°ª°ú ¾Õ¿¡ Á¤·ÄµÈ ¸®½ºÆ®ÀÇ
¸ðµç ۰ªµéÀ» ºñ±³ÇØ¾ß ÇÒ ¶§ÀÌ¸ç ´ÙÀ½°ú °°ÀÌ Å°°ªÀÌ ¿ª¼øÀ¸·Î ÀÔ·ÂµÈ °æ¿ì°¡ ÃÖ¾ÇÀÇ °æ¿ì¿¡
ÇØ´çÇÑ´Ù.

 µû¶ó¼­ ÃÖ¾ÇÀÇ °æ¿ì, ¿¬»ê ½Ã°£Àº ´ÙÀ½ÀÇ °è»ê¿¡ ÀÇÇÏ¿© O(n2)À¸·Î Ç¥½ÃµÈ´Ù.