º»¹®/³»¿ë
3-way ¿ÜºÎ ÇÕº´ Á¤·Ä
1. ÇÁ·ÎÁ§Æ® ¼³¸í
¼øÂ÷ÆÄÀÏ(binaryÇüÅÂ)·Î ÁÖ¾îÁö´Â µ¥ÀÌÅÍ ÆÄÀÏ(.dat)¿¡¼ Ŷ°ª¿¡ ÇØ´ç ÇÏ´Â ºÎºÐÀ» °¡Áö°í Á¤·ÄÀ» ½ÇÇàÇÑ´Ù.
3-way ¿ÜºÎ ÇÕº´Á¤·ÄÀ» ±¸ÇöÇϴµ¥, ¹öÆÛÀÇ Å©±â´Â ¹öÆÛ1, 2, 3Àº °¢°¢ 1KBytesÀ̰í, Ãâ·Â¿¡ ¾²ÀÌ´Â ¹öÆÛ(out[])µµ 1KBytesÀÌ´Ù. Ãâ·Â¹öÆÛ°¡ °¡µæ Â÷¸é ÀÓ½ÃÆÄÀÏ(temp1.txt, temp2.txt)¿¡ binary ÇüÅ·ΠWrite Çϰí, ¹öÆÛ¸¦ ºñ¿î ÈÄ¿¡ ´Ù½Ã ä¿ö°¡¸é¼ Merge Sorting ÇÏ´Â ÇÁ·Î±×·¥À» ±¸ÇöÇÏ´Â °ÍÀÌ´Ù. Merge SortingÀº °¢ ´Ü°è(step)º°·Î ¼öÇàµÈ´Ù.
Merge Sorting µÇ´Â ¹æ½ÄÀº ¾Æ·¡ ±×¸²°ú °°´Ù.
¹öÆÛ¸¦ Sorting ÇÏ´Â ¹æ½ÄÀº °³¹ßÀÚ(developer) ÀÓÀÇ·Î Á¤Çؼ ±¸ÇöÇÑ´Ù.
2. ÇÁ·ÎÁ§Æ® ±¸Çö
´ÙÀ½Àº À̹ø ÇÁ·ÎÁ§Æ® ±¸Çö¿¡ ÀÖ¾î¼ ÀÓÀÇ·Î Á¤ÀÇÇÑ ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀÌ´Ù.
int partition(int list[], int left, int right)
¹öÆÛ(list[])¸¦ µÎ ºÎºÐÀ¸·Î ÆÄƼ¼Ç ÇÏ´Â ÇÔ¼ö. quick_sort()¿¡¼ »ç¿ëµÈ´Ù.
void quick_sort(int list[], int left, int right)
¹öÆÛ(list[])¿¡ ÀúÀåµÈ Ű °ªÀ» ÄüÁ¤·Ä(quick-sort)·Î Á¤·ÄÇÏ´Â ÇÔ¼ö.
int compar¡¦(»ý·«)
¨ç ºñ¾îÀÖ´Â ¹öÆÛ¿¡´Â ¡®-1¡¯·Î ä¿î´Ù´Â °Í.
¨è ¿©·¯ Ƚ¼öÀÇ »çÀÌŬ(cycle)ÀÌ ÇÑ ´Ü°èÀÇ ½ºÅÜ(step)À» ±¸¼ºÇÑ´Ù´Â °Í.
¨é °¢ ½ºÅÜ¿¡´Â ½ºÅÜ¿¡ ÇØ´çÇÏ´Â °íÀ¯ ¹øÈ£(number)°¡ ÀÖ´Ù´Â °Í.
¨ê ÇϳªÀÇ ¹öÆÛ¸¦ ´Ù ½èÀ¸¸é ¨é¹ø ±ÔÄ¢À¸·Î ±¸ÇÑ number ¸¸Å ´ÙÀ½ ¹öÆÛ·Î ³Ñ¾î°¥ ¶§ fseek()·Î ³Ñ¾î°£´Ù.
ÀÌ´Ù.
¨ç¹ø ±ÔÄ¢Àº init() ÇÔ¼ö°¡ ¿ªÇÒÀ» ´ã´çÇÑ´Ù. flush() ÇÔ¼ö·Î µ¥ÀÌÅ͸¦ output.txt ÆÄÀÏ¿¡ Ãâ·ÂÇÒ ¶§¿¡µµ, isfull() ÇÔ¼ö·Î ¹öÆÛ°¡ °¡µæ á´ÂÁö üũÇÒ ¶§¿¡µµ, compare() ÇÔ¼ö·Î ÃÖ¼Ú°ªÀ» ±¸ÇÒ ¶§¿¡µµ ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù.