40-2-¶ó.Á¤·Ä

¸®½ºÆ®´Â ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ¸¦ Á¦°øÇÏÁö ¾ÊÀ¸¹Ç·Î Á¤·Ä ¼Óµµ°¡ ´ë´ÜÈ÷ ´À¸° ÆíÀÌ´Ù. ±×·¡¼­ sort ¾Ë°í¸®Áò ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¸øÇÏ¸ç ´ë½Å sort ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. sort ¾Ë°í¸®ÁòÀº ÀÓÀÇ Á¢±ÙÀ» Ȱ¿ëÇÏ´Â Äü ¼ÒÆ®·Î ±¸ÇöµÇ¾î Àִµ¥ ºñÇØ ¸®½ºÆ®ÀÇ sort ¸â¹ö ÇÔ¼ö´Â ¸®½ºÆ®¿¡ Á» ´õ ƯȭµÈ ¾Ë°í¸®ÁòÀ¸·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù. µÎ °³ÀÇ ¿øÇüÀÌ Á¦°øµÈ´Ù.

 

void sort();

void sort(BinPred op);

 

Àμö¸¦ ¹ÞÁö ¾Ê´Â sort ¸â¹ö ÇÔ¼ö´Â < ¿¬»êÀÚ·Î ³ëµå¸¦ ºñ±³ÇÏ¿© Á¤·ÄÇϸç Á¶°ÇÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â sort ¸â¹ö ÇÔ¼ö´Â Á¶°ÇÀÚÀÇ ºñ±³ °á°ú´ë·Î Á¤·ÄÇÑ´Ù. ´ÙÀ½ ¸â¹ö ÇÔ¼ö´Â ¿¬¼ÓµÈ Áߺ¹ ¿ä¼Ò¸¦ Á¦°ÅÇϴµ¥ °°Àº À̸§ÀÇ Àü¿ª ÇÔ¼öµµ ÀÖÁö¸¸ ¸â¹ö ÇÔ¼ö´Â ¸®½ºÆ®ÀÇ ¸µÅ© ±¸Á¶¸¦ Ȱ¿ëÇϵµ·Ï ±¸ÇöµÇ¾î ÀÖ´Ù.

 

void unique();

void unique(UniPred op);

 

°£´ÜÇÑ ¿¹Á¦·Î µÎ ÇÔ¼ö¸¦ Å×½ºÆ®ÇØ º¸ÀÚ.

 

¿¹ Á¦ : listsort

#include <Turboc.h>

#include <iostream>

#include <list>

using namespace std;

 

template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";

      copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }

 

void main()

{

     const char str[]="stllistcontainer";

     list<char> li(&str[0],&str[sizeof(str)-1]);

 

     dump("¿øº»",li);

     li.sort();

     dump("sortÈÄ",li);

     li.unique();

     dump("uniqueÈÄ",li);

}

 

¹®ÀÚÀÇ ¸®½ºÆ®¸¦ »ý¼ºÇϰí Á¤·Ä°ú Áߺ¹ ¿ø¼Ò Á¦°Å¸¦ Â÷·Ê´ë·Î ÇØ º¸¾Ò´Ù.

 

¿øº»        ==> s t l l i s t c o n t a i n e r

sortÈÄ      ==> a c e i i l l n n o r s s t t t

uniqueÈÄ    ==> a c e i l n o r s t

 

¹®ÀÚ ÄÚµåÀÇ °ªÀ» ±âÁØÀ¸·Î Á¤·ÄµÇ¸ç Á¤·Ä ÈÄ °°Àº ¹®ÀÚ°¡ µÎ ¹ø ÀÌ»ó ¿¬¼ÓÀûÀ¸·Î ³ª¿À¸é µÚÂÊÀÇ ¹®ÀÚµéÀÌ »èÁ¦µÈ´Ù.

¸®½ºÆ®´Â ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ¸¦ Á¦°øÇÏÁö ¾Ê¾Æ ÀÏ¹Ý ¾Ë°í¸®ÁòÀ» Àû¿ëÇÒ ¼ö ¾øÁö¸¸ sort ¸â¹ö ÇÔ¼ö´Â ¸®½ºÆ®ÀÇ ¸µÅ©¸¦ ÃÖ´ëÇÑ È°¿ëÇÏ¿© Á¤·ÄÀ» ¼öÇàÇÑ´Ù. ±×·¯³ª ¾Æ¹«·¡µµ ÀÓÀÇ Á¢±ÙÀÌ °¡´ÉÇÑ ¹Ýº¹ÀÚ¿¡ ºñÇØ ºñ±³¿Í ±³È¯ ¹æ¹ý¿¡ Á¦¾àÀÌ °¡ÇØÁö¹Ç·Î ¼Óµµ Â÷ÀÌ´Â ³¯ ¼ö¹Û¿¡ ¾ø´Ù. °ú¿¬ º¤ÅÍ¿¡ ºñÇØ ¾î´À Á¤µµ ´À¸°Áö ¼Óµµ Å×½ºÆ®¸¦ ÇØ º¸ÀÚ.

 

¿¹ Á¦ : sortspeed

#include <Turboc.h>

#include <iostream>

#include <vector>

#include <list>

#include <algorithm>

using namespace std;

 

const unsigned NUM=1000000;

 

void main()

{

     randomize();

     vector<int> vi;

     list<int> li;

     int i;

     clock_t start;

 

     for (i=0;i<NUM;i++) {

          vi.push_back(random(100));

          li.push_back(random(100));

     }

     cout << "۸¦ ´©¸£¸é º¤Å͸¦ Á¤·ÄÇÕ´Ï´Ù." << endl;

     getch();

     start=clock();

     sort(vi.begin(),vi.end());

     cout << "º¤ÅÍ Á¤·Ä¿Ï·á. ¼Ò¿ä½Ã°£ = " << clock()-start << endl;

 

     cout << "۸¦ ´©¸£¸é ¸®½ºÆ®¸¦ Á¤·ÄÇÕ´Ï´Ù." << endl;

     getch();

     start=clock();

     li.sort();

     cout << "¸®½ºÆ® Á¤·Ä¿Ï·á. ¼Ò¿ä½Ã°£ = " << clock()-start << endl;

}

 

Á¤¼öÇüÀÇ º¤ÅÍ¿Í ¸®½ºÆ®¿¡ 100¸¸°³ÀÇ ³­¼ö¸¦ ³Ö¾î ³õ°í Á¤·ÄÇØ º¸¾Ò´Ù. ½Ã½ºÅÛ ¼Óµµ¿¡ µû¶ó °á°ú´Â ´Ù¸£°ÚÁö¸¸ »ó´ëÀûÀÎ ¼Óµµ´Â ÃøÁ¤ °¡´ÉÇÏ´Ù. °³¹ßÅø°ú ºôµå ¸ðµå¿¡ µû¶ó¼­µµ ¼Óµµ Â÷À̰¡ ¸¹ÀÌ ¹ú¾îÁö´Âµ¥ ´Ü, µð¹ö±× ¸ðµå¿¡¼­´Â ¹Ýº¹ÀÚÀÇ À¯È¿¼ºÀ» Á¡°ËÇÏ´Â ÄÚµå·Î ÀÎÇØ °øÁ¤ÇÑ ºñ±³°¡ µÇÁö ¾ÊÀ¸¹Ç·Î ¹Ýµå½Ã ¸±¸®Áî ¸ðµå¿¡¼­ ½ÇÇàÇØ¾ß ÇÑ´Ù.

 

ÄÄÆÄÀÏ·¯

ºñÁÖ¾ó C++ 6.0

ºñÁÖ¾ó C++ 8.0

Dev-C++

º¤ÅÍ

220

280

891

¸®½ºÆ®

2924

1222

3455

 

º¸´Ù½ÃÇÇ ¸®½ºÆ®°¡ º¤ÅÍ¿¡ ºñÇØ ÀÛ°Ô´Â 4¹è ¸¹°Ô´Â 10¹èµµ ´õ ´À¸®°Ô Á¤·ÄµÈ´Ù. ¿ä¼Ò °³¼ö°¡ ¸¹¾ÆÁö¸é Â÷ÀÌ´Â ´õ ¹ú¾îÁú °ÍÀÌ´Ù. Á¤·ÄÀº ºñ±³¿Í ±³È¯ÀÌ ±²ÀåÈ÷ ºó¹øÇÑ ¾Ë°í¸®ÁòÀ̹ǷΠÁ¶±ÝÀÌ¶óµµ ¼Óµµ¸¦ ³ôÀÌ·Á¸é ÀÓÀÇ Á¢±ÙÀÌ °¡´ÉÇØ¾ß ÇÑ´Ù. ²À ÇÊ¿äÇÒ °æ¿ì´Â ÀÌ ¸â¹ö ÇÔ¼ö·Î ¸®½ºÆ®¸¦ Á¤·ÄÇÒ ¼ö´Â ÀÖÁö¸¸ Á¤·ÄÀÌ ÇÊ¿äÇÑ ÀڷḦ ¸®½ºÆ®¿¡ ÀúÀåÇÏ´Â °ÍÀº ¾ÖÃÊ¿¡ ¼±ÅÃÀÌ À߸øµÈ °ÍÀÌ´Ù.

¿©±â¼­ STL ¼³°èÀÇ ºñÀϰü¼ºÀ» ¿³º¼ ¼ö Àִµ¥ ¸®½ºÆ®°¡ ±¸Á¶ÀûÀÎ ¹®Á¦·Î ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ¸¦ Á¦°øÇÏÁö ¸øÇØ Á¤·ÄÀÌ ºñÈ¿À²ÀûÀ̶ó¸é sort ¸â¹ö ÇÔ¼öµµ ¾Æ¿¹ Á¦°øÇÏÁö ¾Ê´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ÀÌ ¸â¹ö ÇÔ¼ö°¡ Á¦°øµÇ¸é ³»ºÎ ±¸Á¶¸¦ Àß ¸ð¸£´Â »ç¶÷Àº ¸®½ºÆ®µµ Á¤·ÄÀÌ Àß µÇ´Â °ÍÀ¸·Î Âø°¢ÇÏ°í ¸®½ºÆ®¸¦ Á¤·ÄÇÏ·Á°í µé °ÍÀÌ´Ù. STLÀº ÀÌ·± ºñÈ¿À²À» ¹æÁ¶Çϰí ÀÖ´Â °ÍÀÌ´Ù. ±×·¡µµ ²À ÇÊ¿äÇÒ ¶§´Â ¾µ ¼ö ÀÖ¾î¾ß ÇϹǷΠ¾ø´Â °Íº¸´Ù ³´´Ù°í ÇÑ´Ù¸é º¤ÅÍ¿¡ push_front¸¦ Á¦°øÇÏÁö ¸»¾Æ¾ß ÇÒ ÀÌÀ¯µµ ÀüÇô ¾ø´Â ¼ÀÀÌ´Ù.