20-2-´Ù.»ðÀÔ Á¤·Ä

»ðÀÔ Á¤·ÄÀº ¹è¿­ÀÇ ¾ÕÂʺÎÅÍ ¼øȸÇϸ鼭 Á¤·ÄÇØ ¿À´Âµ¥ ¾ÕÂÊÀÇ Á¤·ÄµÈ ºÎºÐ¿¡¼­ ´ë»ó ·¹ÄÚµåÀÇ À§Ä¡¸¦ ã¾Æ¼­ »ðÀÔÇÏ´Â ¾Ë°í¸®ÁòÀÌ´Ù. Àڱ⺸´Ù ´õ Å« °ªÀ» °è¼Ó µÚ·Î º¸³»¸é¼­ ºó Ä­ Çϳª¸¦ ¸¸µç ÈÄ Àڽź¸´Ù À۰ųª °°Àº °ªÀ» ¸¸³¯ ¶§ ±× ¿À¸¥ÂÊ À§Ä¡¿¡ »ðÀÔÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â "complete"¶ó´Â ¹®ÀÚ¿­À» »ðÀÔ Á¤·Ä ¾Ë°í¸®ÁòÀ¸·Î Á¤·ÄÇÏ¿© "ceelmopt" ¹®ÀÚ¿­À» ¸¸µç´Ù.

 

¿¹ Á¦ : InsertionSort

#include <Turboc.h>

 

void InsertionSort(char *ar, int num)

{

     int i,j;

     char temp;

 

     // µÎ ¹ø° ¿ä¼ÒºÎÅÍ ³¡±îÁö ¼øȸ

     for (i=1;i<num;i++) {

          // ¾ÕÂÊÀ¸·Î À̵¿Çϸ鼭 Àڱ⺸´Ù Å« °ªÀ» ÇÑÄ­¾¿ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÑ´Ù.

          for (temp=ar[i],j=i;j>0;j--) {

              if (ar[j-1] > temp) {

                   ar[j]=ar[j-1];

              } else {

                   break;

              }

          }

          // Àڱ⺸´Ù Å©Áö ¾ÊÀº ÃÖÃÊÀÇ Ä­ ÀÚ¸®¿¡ ÀÚ½ÅÀ» »ðÀÔÇÑ´Ù.

          ar[j]=temp;

     }

}

 

void main()

{

     char str[]="complete";

 

     printf("Á¤·Ä ÀüÀÇ ¹®ÀÚ¿­ : %s\n",str);

     InsertionSort(str,strlen(str));

     printf("Á¤·ÄµÈ ¹®ÀÚ¿­ : %s\n",str);

}

 

i ·çÇÁ·Î ¹è¿­ ³¡±îÁö ¼øȸÇ쵂 µÎ ¹ø° ¿ä¼ÒºÎÅÍ ½ÃÀÛÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¾ÕÂÊÀÇ ÇÑ ¹®ÀÚ¸¸ º¸¸é ÀÌ ºÎºÐ ¹®ÀÚ¿­Àº ÀÌ¹Ì Á¤·ÄµÇ¾î ÀÖ´Ù°í º¼ ¼ö Àֱ⠶§¹®ÀÌ´Ù. j ·çÇÁ´Â ar[i] ¹®ÀÚ(temp)¿Í ¹Ù·Î ¿ÞÂÊÀÇ ¹®ÀÚ¸¦ ºñ±³ÇÏ¿© ¿ÞÂÊÀÌ ´õ Ŭ °æ¿ì ÀÌ °ªÀ» ¿À¸¥ÂÊÀ¸·Î ÇÑ Ä­ À̵¿½ÃŲ´Ù. Àڱ⺸´Ù ´õ Å« °ªÀ» °è¼Ó À̵¿½ÃÅ°´Ù°¡ Å©Áö ¾ÊÀº °ªÀ» ¸¸³ª¸é ÀÌ °ª ´ÙÀ½ ÀÚ¸®¿¡ ar[i]¸¦ »ðÀÔÇÑ´Ù. ¿¹Á¦ÀÇ µ¿ÀÛ ´Ü°è¸¦ ±×¸²À¸·Î ¿¬±¸ÇØ º¸ÀÚ.

ÃÖÃÊ i°¡ 1ÀÏ ¶§, Áï ar[i]°¡ oÀÏ ¶§ ¿ÞÂÊ ¹®ÀÚ¿Í Å©±â¸¦ ºñ±³ÇØ º¸´Ï ¹Ù·Î ¿ÞÂÊÀÇ c°¡ Àڽź¸´Ù ´õ ÀÛ´Ù. ±×·¯¹Ç·Î À̶§´Â ±³È¯À» ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç ÀÌ »óÅ¿¡¼­ co±îÁö ºÎºÐ Á¤·ÄÀ» ¿Ï·áÇÑ´Ù. i°¡ 2ÀÏ ¶§ m°ú ¿À¸¥ÂÊÀÇ o¸¦ ºñ±³ÇØ º¸´Ï o°¡ ´õ µÚÂÊÀ¸·Î ¿Í¾ß ÇÑ´Ù. ±×·¡¼­ o¸¦ µÚ·Î À̵¿½ÃÅ°°í ´ÙÀ½ ÀÚ¸®¿Í ºñ±³Çϴµ¥ c°¡ mº¸´Ù Å©Áö´Â ¾ÊÀ¸¹Ç·Î ÀÌ ÀÚ¸®¿¡ mÀÌ »ðÀԵȴÙ. ¿©±â±îÁö cmo°¡ ºÎºÐÀûÀ¸·Î Á¤·ÄµÇ¾ú´Ù.

´ÙÀ½ ´Ü°èÀÇ p¹®ÀÚ´Â ¾ÕÂÊÀÇ ºÎºÐ Á¤·ÄµÈ cmo¿¡ ³¢¾îµé ÀÚ¸®°¡ ¾øÀ¸¹Ç·Î ÀÌ ÀÚ¸®¿¡ °¡¸¸È÷ ÀÖÀ¸¸é µÈ´Ù. ¿Ö³ÄÇÏ¸é ºÎºÐ Á¤·ÄµÈ ¹®ÀÚ¿­Áß °¡Àå Å« °ª o°¡ Àڽź¸´Ù ´õ À۱⠶§¹®ÀÌ´Ù. cmop±îÁö Á¤·ÄÀÌ ¿Ï·áµÇ¾ú´Ù. i°¡ 4ÀÏ ¶§ lÀ» ¾Õ ÂÊÀÇ ºÎºÐ Á¤·Ä °á°úÀÎ cmop¿¡¼­ lÀÇ ÀÚ¸®¸¦ ã¾Æ »ðÀÔÇϴµ¥ ÀÌ °úÁ¤Àº Á» ´õ »ó¼¼ÇÏ°Ô ´Ü°èº°·Î ºÐ¼®ÇØ º¸ÀÚ.

¸ÕÀú temp¿¡ ar[i]ÀÇ °ª lÀ» º¹»çÇØ µÐ´Ù. ±×¸®°í j¸¦ iºÎÅÍ ¹è¿­ ¾ÕÂÊÀ¸·Î À̵¿½ÃÅ°¸é¼­ ¿ÞÂÊ ¿ä¼Ò¿Í ºñ±³Çϴµ¥ ù ¹ø° ·çÇÁ¿¡¼­ p°¡ lº¸´Ù Å©¹Ç·Î p¸¦ ¿À¸¥ÂÊÀÇ lÀÚ¸®·Î À̵¿½ÃŲ´Ù. ´ÙÀ½ ·çÇÁ¿¡¼­ lº¸´Ù ´õ Å« o°¡ pÀÚ¸®·Î ¿À°í mÀÌ oÀÚ¸®·Î ¿Â´Ù. ´ÙÀ½ ´Ü°è¿¡¼­ c´Â lº¸´Ù Å©Áö ¾ÊÀ¸¹Ç·Î À̶§ j·çÇÁ¸¦ Å»ÃâÇϴµ¥ mÀÌ ¿ø·¡ ÀÖ´ø ÀÚ¸®´Â ºóÄ­ÀÌ µÇ¾î ÀÖ´Ù. ÀÌ ºóÄ­¿¡ temp¿¡ ÀúÀåµÈ lÀ» »ðÀÔÇϸé lÀÌ Á¦ÀÚ¸®¸¦ ã´Â´Ù.

ÀÌ·± ½ÄÀ¸·Î ¾ÕÂÊÀÇ ºÎºÐ ¹®ÀÚ¿­¿¡¼­ Àڱ⺸´Ù ´õ Å« °ªÀ» °è¼Ó µÚÂÊÀ¸·Î À̵¿½ÃÅ°¸ç ÀÚ½ÅÀÌ µé¾î°¥ ÀÚ¸®¸¦ ã¾Æ »ðÀԵǴ °ÍÀÌ´Ù. ´ÙÀ½ i·çÇÁ¿¡¼­´Â e°¡ Á¦ÀÏ ¾ÕÂÊÀ¸·Î À̵¿ÇÏ°í t´Â ºÎºÐ Á¤·ÄµÈ ¹®ÀÚ¿­ Áß¿¡ Á¦ÀÏ Å©¹Ç·Î ¾Æ¹« Àϵµ ÀϾÁö ¾Ê´Â´Ù. ¸¶Áö¸·À¸·Î Á¦ÀÏ ³¡¿¡ ÀÖ´Â e°¡ µÎ ¹ø° À§Ä¡·Î À̵¿Çϴµ¥ Á¦ÀÏ Ã³À½ÀÇ e¿Í´Â °°Àº °ªÀÌÁö¸¸ °°Àº °ªÀ» ¸¸³¯ ¶§ ±× ¿À¸¥ÂÊ ÀÚ¸®¿¡ »ðÀÔÇÑ´Ù. ±×·¡¼­ »ðÀÔ Á¤·ÄÀº °°Àº °ª³¢¸® ¿ø·¡ ¼ø¼­°¡ À¯ÁöµÇ´Â ¾ÈÁ¤¼ºÀÌ ÀÖ´Ù.

»ðÀÔ Á¤·Ä ¼Óµµ¸¦ °³¼±ÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýµéÀÌ ¿¬±¸µÇ¾î Àִµ¥ ¹è¿­ÀÇ Á¦ÀÏ Ã¹ ¿ä¼Ò¿¡ °¡Àå ÀÛÀº °ªÀ» ¹Ì¸® ¹èÄ¡Çϰųª ¾Æ´Ï¸é ÃæºÐÈ÷ ÀÛÀº ´õ¹Ì°ªÀ» ¹èÄ¡ÇÏ¿© j°¡ ¹è¿­ ¹üÀ§¸¦ ¹þ¾î³ªÁö ¾Êµµ·Ï ÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. ¶Ç ¹è¿­ÀÇ ¾ÕÂÊÀº Ç×»ó Á¤¿­µÇ¾î ÀÖÀ¸¹Ç·Î »õ·Î¿î °ªÀÌ »ðÀ﵃ À§Ä¡¸¦ À̺Р°Ë»öÀ¸·Î ã¾Æ ÀÏ°ýÀûÀ¸·Î ¹è¿­ ¿ä¼Ò¸¦ À̵¿ÇÏ´Â ¹æ¹ýÀÌ »ç¿ëµÇ±âµµ ÇÑ´Ù.

½© Á¤·Ä(Shell Sort)Àº »ðÀÔ Á¤·ÄÀ» °³¼±ÇÑ Á» ºü¸¥ ¾Ë°í¸®ÁòÀÌ´Ù. »ðÀÔ Á¤·ÄÀº ÀÎÁ¢ ¿ä¼Ò³¢¸® ºñ±³ÇÏ¿© ÀÚ¸®¸¦ À̵¿Çϴµ¥ ºñÇØ ½© Á¤·ÄÀº ÀÏÁ¤¼ö¸¸Å­ °Ç³Ê¶Ù¸é¼­ ºñ±³ÇÏ¿© ±³È¯ÇÏ´Â ¾Ë°í¸®ÁòÀÌ´Ù. À̶§ ¸î Ä­¾¿ °Ç³Ê¶Û °ÍÀΰ¡¿¡ µû¶ó ±¸ÇöÀÌ Á¶±Ý¾¿ ´Þ¶óÁö´Âµ¥ ÀÓÀÇÀÇ µ¥ÀÌÅÍ¿¡ ´ëÇؼ­µµ Ç×»ó Á¦ ¼Óµµ°¡ ³ª¿Í Äü Á¤·Ä¸¸Å­À̳ª ºü¸£´Ù.