(4) Äü Á¤·Ä¹ý(Quick Sorting)
Äü Á¤·ÄÀÇ ±âº» µ¿ÀÛÀº Á¤·ÄÇϰíÀÚ ÇÏ´Â ¸®½ºÆ®¿¡¼
ÇÏÀDZâÁØÀÌ µÇ´Â ۸¦ ¼±Á¤ÇÏ¿© ±âÁØÅ°¸¦
Àû´çÇÑ À§Ä¡·Î À̵¿ÇÏ´Â °ÍÀÌ´Ù. À̶§ ¸®½ºÆ®¿¡¼ ±âÁØÅ°¸¦ °æ°è·Î ±âÁØÅ°º¸´Ù
¾Õ¿¡ Àִ ŰµéÀº
¸ðµÎ ±âÁØÅ°º¸´Ù À۰ųª °°À¸¸ç ±âÁØÅ°º¸´Ù µÚ¿¡ ÀÖ´Â
۵éÀº ¸ðµÎ ±âÁØÅ°º¸´Ù Å©°Å³ª °°°Ô ¸¸
µç´Ù. ´ÙÀ½°ú °°Àº ۵é·Î ±¸¼ºµÈ ¸®½ºÆ®¸¦ »ý°¢ÇØ º¸ÀÚ.

¸®½ºÆ®ÀÇ Ã¹ ¿ø¼Ò¸¦ ±âÁØÅ°·Î ¼±Á¤ÇÑ ÈÄ ´ÙÀ½°ú °°Àº µ¿ÀÛÀ»
¼öÇàÇÑ´Ù. ±âÁØÅ° ¹Ù·Î ´ÙÀ½ÀÇ À§Ä¡
ºÎÅÍ µÚÂÊÀ¸·Î ±âÁØÅ°º¸´Ù Å« ۸¦ ãÀ¸¸ç, µ¿½Ã¿¡ ¸®½ºÆ®ÀÇ ¸¶Áö¸· ŰºÎÅÍ ¾ÕÂÊÀ¸·Î
ÁöÁØÅ°º¸´Ù
ÀÛÀº ۸¦ ã¾Æ ¼·Î ±³È¯ÇÑ´Ù. À§ÀÇ ¿¹¿¡¼ ±âÁØÅ°´Â 17·Î Àâ°Ô
µÇ¸ç, ±âÁØÅ°º¸´Ù Å« Ű´Â 26ÀÌ
µÇ°í ±âÁØÅ°º¸´Ù ÀÛÀº Ű´Â 2°¡ µÇ¾î ¼·Î ±³È¯À»
ÇÏ¸é ´ÙÀ½°ú °°Àº ¸®½ºÆ®°¡ µÈ´Ù.

°è¼ÓÇØ¼ ´ÙÀ½ ŰºÎÅÍ ÀÌ·¯ÇÑ µ¿ÀÛÀ» ¹Ýº¹ÇÏ¸é ±âÁØÅ° 17º¸´Ù
Å« Ű´Â 24°¡ µÇ°í ÀÛÀº Ű´Â 8ÀÌ
µÇ¾î ¼·Î ±³È¯ÇÏ¸é ´ÙÀ½°ú °°Àº ¸®½ºÆ®°¡ µÈ´Ù.

ÀÌ·¯ÇÑ µ¿ÀÛÀ» °è¼ÓÇÏ¸é ±âÁØÅ° 17º¸´Ù Å« Ű´Â 24°¡ µÇ°í ÀÛÀº Ű´Â
6ÀÌ µÇ´Â À§Ä¡¸¦ ã°Ô µÈ
´Ù. ±×·¯³ª À̹ø¿¡´Â ¾Æ·¡ÀÇ ¸®½ºÆ®¿Í °°ÀÌ ¾ÕÂÊ¿¡¼ºÎÅÍ Å« ۸¦ ãÀº À§Ä¡¿Í µÚÂÊ¿¡¼ºÎÅÍ
ÀÛ
Àº ۸¦ ãÀº À§Ä¡°¡ ¼·Î ±³Â÷ÇßÀ½À» ¾Ë ¼ö ÀÖ´Ù.

ÀÌ °æ¿ì, µÎ ۰ªÀ» ±³È¯ÇÏÁö ¾ÊÀ¸¸ç ±×´ë½Å ±âÁØÅ°¿Í ÀÛÀº ۸¦ ¼·Î ±³È¯ÇÏ¿©
´ÙÀ½°ú °°Àº ¸®½º
Æ®¸¦ ¸¸µç´Ù.

À§ÀÇ ¸®½ºÆ®¿¡¼ ÁöÁØÅ° 17À» °æ°è·Î ¾ÕÂÊ Å°µéÀº ¸ðµÎ ±âÁØÅ°º¸´Ù ÀÛÀ¸¸ç
µÚÂÊ Å°µéÀº ¸ðµÎ
17º¸´Ù Å« °ÍÀ» ¾Ë ¼ö ÀÕ´Ù. µû¶ó¼ ±âÁØÅ° 17Àº Àüü ¸®½ºÆ®°¡ Á¤·ÄÀÌ µÈ ÈÄ¿¡µµ
À§Ä¡ º¯µ¿ÀÌ ¾ø
°Ô µÈ´Ù. À§¿¡¼ ¼³¸íµÈ ±âº» µ¿ÀÛÀº ±âÁØÅ°¸¦ Á¦ À§Ä¡¿¡ ³õÀº ÈÄ ¿ø·¡ÀÇ ¸®½ºÆ®¸¦
¾ÕÂÊ Å°µé·Î
±¸¼ºµÈ ¸®½ºÆ®¿Í µÚÂÊ Å°µé·Î ±¸¼ºµÈ ¸®½ºÆ®·Î ¾çºÐÇϹǷΠÀ̸¦ ºÐÇÒ(Partition)À̶ó
ºÎ¸¥´Ù. ¸Õ
Àú Àüü ¸®½ºÆ®¸¦ ºÐÇÒÇÏ¿© 2°³ÀÇ ¸®½ºÆ®·Î ¸¸µé°í ºÐÇÒµÈ 2°³ÀÇ ¸®½ºÆ®¿¡ °¢°¢ ´Ù½Ã
ºÐÇÒÀ» Àû
¿ëÇÑ´Ù. ÀÌ·¯ÇÑ ¹Ýº¹µÈ ºÐÇÒÀ» Àû¿ëÇÒ ¶§ ÆíÀÇ»ó ¿ÞÂÊ ¸®½ºÆ®¸¦ ¸ÕÀú ºÐÇÒÇÑ´Ù. ¾Õ¿¡¼
»ç¿ëµÈ
¿¹¿¡ ´ëÇÏ¿© ºÐÇÒÀ» ¹Ýº¹ ¼öÇàÇÏ¿© Àüü ¸®½ºÆ®ÀÇ Á¤·ÄÀ» ¿Ï·ÎÇÏ´Â Äü Á¤·Ä¹ýÀÇ ¿¹´Â
±×¸² 6¿¡ ÁÖ
¾îÁø´Ù. ±×¸² 6¿¡¼ m°ú nÀº ºÐÇÒÀ» ¼öÇàÇÒ ¸®½ºÆ®ÀÇ ¹üÀ§¸¦ ³ªÅ¸³½´Ù.

ÀϹÝÀûÀ¸·Î ±âÁØÅ°´Â Ç×»ó ºÐÇÒÇϰíÀÚ ÇÏ´Â ¸®½ºÆ®ÀÇ Ã¹ ¹øÂ° Ű·Î ¼±Á¤µÇ´Âµ¥
ÀÌ·¯ÇÑ ¼±Á¤ ¹æ¹ý
À» »ç¿ëÇÏ¿© Äü Á¤·ÄÀ» C ÇÁ·Î±×·¥À¸·Î ÀÛ¼ºÇϸé ÇÁ·Î±×·¥ 7-4¿Í °°´Ù. ±×·¯³ª ¸®½ºÆ®ÀÇ
´Ù¸¥
۸¦ ±âÁØÅ°·Î ¼±Á¤ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ·Á¸é ¼±Á¤µÈ Ű¿Í ¸®½ºÆ®ÀÇ Ã¹ ¹øÂ° ۸¦
¸ÕÀú ±³È¯
ÈÄ ¸®½ºÆ® 9¸¦ ÀÌ¿ëÇÏ¸é °¡´ÉÇÏ´Ù.
(¸®½ºÆ® 9) Äü Á¤·Ä
#define MAXINT 30000
void Quick_Sort(int m,int n) /* m°ú nÀº Àû¿ë¹üÀ§ÀÇ ½ÃÀÛ°ú ³¡ À§Ä¡
*/
{
int i,j,k,temp;
if (m<n)
{
i=m;j=n+1;
k=key[m]; /*
±âÁØÅ° */
do { /*
ºÐÇÒÀ» ¼öÇàÇÏ´Â do...while ¹® */
do { /*
¾Õ¿¡¼ºÎÅÍ ±âÁØÅ°º¸´Ù Å« Ű ã±â */
i=i+1;
} while (record[i]<k);
do {
/*
µÚ¿¡¼ºÎÅÍ ±âÁØÅ°º¸´Ù ÀÛÀº Ű ã±â */
j=j-1;
} while (record[j]>k);
if (i<j)
{ /*
Å« Ű¿Í ÀÛÀº ŰÀÇ ±³È¯ */
temp=key[j];
key[j]=key[i];
key[i]=temp;
}
} while (i<=j);
temp=key[j]; /*
±âÁØÅ°¿Í ÀÛÀº ŰÀÇ ±³È¯ */
key[j]=key[m];
key[m]=temp;
Quick_Sort(m,j-1); /*
¾ÕÂÊ ¸®½ºÆ®¿¡ ´ëÇÑ ºÐÇÒÀ» °è¼Ó */
Quick_Sort(j+1,n); /*
µÚÂÊ ¸®½ºÆ®¿¡ ´ëÇÑ ºÐÇÒÀ» °è¼Ó */
}
}
Äü Á¤·ÄÀÇ ºÐ¼®
¸®½ºÆ® 9ÀÇ Quick_Sort¿¡¼ ÃÖ¾ÇÀÇ °æ¿ì´Â ¸ÅºÐÇÒÀÌ
¼öÇàµÈ ÈÄ ³²Àº Ŷ°ªµéÀÌ ¸ðµÎ ÇÑÂÊÀÇ
¸®½ºÆ®¿¡ Æ÷ÇԵǴ °ÍÀÌ´Ù. ¿¹¸¦ µé¸é ¾Æ·¡¿Í °°ÀÌ ÀÌ¹Ì Á¤·ÄµÈ ¸®½ºÆ®°¡ ÀԷµÉ
¶§ ÃÖ¾ÇÀÇ °æ¿ì
¿¡ ÇØ´çÇÑ´Ù.

µû¶ó¼ n°³ÀÇ Å°¸¦ °®´Â ¸®½ºÆ®¿¡ ´ëÇÏ¿© ÃÖ¾ÇÀÇ °æ¿ì Àû¿ëµÇ´Â ºÐÇÒÀÇ
Ƚ¼ö´Â n-1¹øÀÌ¸ç ¸Å
ºÐÇÒ¿¡ »ç¿ëµÇ´Â ºñ±³ÀÇ È½¼ö´Â Àû¿ëµÇ´Â ¸®½ºÆ®¿¡ Æ÷ÇÔµÈ Å°µéÀÇ ¼ö¿¡
ºñ·ÊÇÑ´Ù. ±×·¯¹Ç·Î ÃÑ
¼Ò¿ä ½Ã°£Àº n+(n-1)+........+2¿¡ ºñ·ÊÇÏ°Ô µÇ¸ç
O(n2)À¸·Î Ç¥½ÃµÈ´Ù.
ÃÖ¾ÇÀÇ °æ¿ì¿Í´Â ¹Ý´ë·Î ÃÖ¼±ÀÇ °æ¿ì´Â ¸ÅºÐÇÒÀÌ ¼öÇàµÈ ÈÄ 2°³ÀÇ ¸®½ºÆ®°¡
°°Àº Å©±â·Î Ç×»ó
³ª´©¾îÁö´Â °ÍÀ¸·Î ¼Ò¿ä½Ã°£Àº O(nlog2n)ÀÌ¸ç Æò±Õ ¼Ò¿ä ½Ã°£µµ ¿ª½Ã O(nlog2n)À̶ó°í ¾Ë·ÁÁ®
ÀÖ´Ù.