¡¡ Explain Sort Algorithms ¡¡

¹â®¥¢¥ë¥´¥ê¥º¥à

¡¡¤³¤³¤Ç¤Ï¹â®¤Ë½èÍý¤¬¤Ç¤­¤ë¥¢¥ë¥´¥ê¥º¥à¤ò¾Ò²ð¤¹¤ë¡£¤³¤³¤Ç¹â®¤È¸Æ¤ó¤Ç¤¤¤ë¤â¤Î¤Ï¡¢£Ï¡Ê£î£ì£ï£ç£î¡Ë¤ËʬÎà¤Ç¤­¤ë¤â¤Î¤Ç¤¢¤ë¡£ ¡¡

¥Ò¡¼¥×¥½¡¼¥È ( Heapsort )

¡¡¥Ò¡¼¥×¡Êheap¡Ë¤È¤Ï¡¢°Ê²¼¤Î¾ò·ï¤òËþ¤¿¤¹£²Ê¬ÌڤΤ³¤È¤Ç¤¢¤ë¡££²Ê¬ÌڤȤϡ¢£±¤Ä¤ÎĺÅÀ¤«¤é£²Ëܰʲ¼¤Î»Þ¤¬½Ð¤Æ¤¤¤ëÌڤΤ³¤È¤Ç¤¢¤ê¡¢·×»»µ¡Ê¬Ìî¤Ç¤Ï½ÅÍפʹ½Â¤¤Î£±¤Ä¤Ç¤¢¤ë¡£
¡¡¥Ò¡¼¥×¡§£²Ê¬ÌڤγÆĺÅÀ¤Ë¤Ï¼¡¤Î£²¼°¤òËþ¤¿¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¡¡¡¡¡¡¡¡¡¡¡¡£±¡¥¡¡£è(i) ¡æ £è(2i)     i=1,2,3,...
            £²¡¥¡¡£è(i) ¡æ £è(2i+1)   i=1,2,3,...
 
¡¡¤Ä¤Þ¤ê¡¢£²Ê¬ÌڤγÆĺÅÀ¤Ë°ÌÃÖ¤¹¤ë¥Ç¡¼¥¿¤ÎÃͤϡ¢¾ï¤Ë¾å¤Ë°ÌÃÖ¤¹¤ë¥Ç¡¼¥¿¤ÎÃͰʲ¼¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¡¡Îã
 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(1)
                    ¡¡¡¡¡¡        ¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(2)  ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(3)
        ¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡£è(4)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(5)         £è(6)                   £è(7)
  ¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
£è(8)        £è(9)       £è(10)

¡¡¤³¤Î¾ì¹ç¡¢£è(1)¡æ£è(2),£è(3)
 ¡¡¡¡¡¡¡¡¡¡ £è(2)¡æ£è(4),£è(5)
¡¡¡¡¡¡¡¡¡¡¡¡£è(3)¡æ£è(6),£è(7)
¡¡¡¡¡¡¡¡¡¡¡¡£è(4)¡æ£è(8),£è(9)
¡¡¡¡¡¡¡¡¡¡¡¡£è(5)¡æ£è(10)
 
¤Ç¤¢¤ë¡£¥Ò¡¼¥×¤Ë¤è¤ëʤٴ¹¤¨¤Ï¡¢¥Ò¡¼¥×¤¬¤¹¤Ç¤ËÍ¿¤¨¤é¤ì¤Æ¤¤¤ë¤â¤Î¤È¤·¤Æ¡¢¥Ò¡¼¥×¤¬¶õ¤Ë¤Ê¤ë¤Þ¤Ç°Ê²¼¤Î£²¤Ä¤Î¥¹¥Æ¥Ã¥×¤ò·«¤êÊÖ¤¹¡£
¥¹¥Æ¥Ã¥× £±¡¡ºÇ¾å°Ì¤Î£è(1)¤ò¼è¤ê½Ð¤¹¡£
¥¹¥Æ¥Ã¥× £²¡¡»Ä¤ê¤Î¥Ò¡¼¥×£è(2),£è(3),...,£è(n)¤ò¥Ò¡¼¥×¤ËºÆ¹½À®¤¹¤ë¡£
¡¡¡¡¡¡¡¡¡¡   ºÆ¹½À®¤Ï¡¢°Ê²¼¤Îa), b) ¤Ë¤·¤¿¤¬¤Ã¤Æ¹Ô¤Ê¤¦¡£
¡¡¡¡¡¡¡¡¡¡ ¡¡a) £è(1)¤Î°ÌÃ֤ˣè(n)¤ò°ÜÆ°¤¹¤ë¡£¤â¤È¤Î£è(n)¤Ïºï½ü¤¹¤ë¡£
¡¡¡¡¡¡¡¡¡¡   b) £è(1)¤Î°ÌÃÖ¤«¤éshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ shiftdownÁàºî¡§ £è(i) < max(£è(2i), £è(2i+1))¤Î¤È¤­¡¢
 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(2i)¤È£è(2i+1)¤ÎÂ礭¤¤Êý¤ò£è(i)¤È¸ò´¹¤¹¤ë¡£
                               ¸ò´¹¤·¤¿¤È¤³¤í¤«¤é¡¢Æ±ÍͤÊÁàºî¤ò·«¤êÊÖ¤¹¡£

¡¡shiftdownÁàºî¤ÎÎã¤ò°Ê²¼¤Ë¼¨¤¹¡£

½é´ü¾õÂÖ¡§
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ £·£³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶£¶
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡£²£²¡¡¡¡   ¡¡¡¡¡¡£³£·¡¡¡¡£±£±¡¡  ¡¡¡¡¡¡¡¡£´£¹¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡¡¡£¶
 
¾õÂÖ£²¡§½é´ü¾õÂ֤ˤª¤¤¤Æ£è(1)¤Ç¤¢¤ë£¸£´¤ò¼è¤ê½Ð¤·¡¢£è(n)¤Ç¤¢¤ë£¶¤ò£è(1)¤Î°ÌÃ֤˰ÜÆ°¤¹¤ë¡£ ¡¡
  ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶£¶
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡£±£±¡¡¡¡¡¡¡¡¡¡£´£¹¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡¡¡
£è(1)¤Î°ÌÃÖ¡Ê£¶¡Ë¤«¤éshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶£¶
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡£±£±¡¡¡¡¡¡¡¡¡¡£´£¹¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶£¶
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡£±£±¡¡¡¡¡¡¡¡¡¡£´£¹¡¡

¾õÂÖ£³¡§£è(1)¤Ç¤¢¤ë£·£³¤ò¼è¤êµî¤ê¡¢£è(n)¤Ç¤¢¤ë£´£¹¤ò£è(1)¤Î°ÌÃ֤˰ÜÆ°¤¹¤ë¡£

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£´£¹¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶£¶
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡£±£±¡¡¡¡¡¡¡¡¡¡

¡¡£è(1)¤«¤éshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£´£¹
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡£±£±¡¡¡¡¡¡¡¡¡¡
¡¡
¾õÂÖ£´¡§£¶£¶¤ò¼è¤ê½ü¤­¡¢£±£±¤ò£è(1)°ÌÃ֤˰ÜÆ°¤·¡¢shiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£´£¹¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£¶£¶¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£±£±
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

¾õÂÖ£µ¡§°Ê²¼Æ±ÍͤÊÁàºî¤ò·«¤êÊÖ¤¹¡£

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£³£·¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£´£¹¡¡£¶£¶¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£±£±
¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡
¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

¾õÂÖ£¶¡§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£²¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£³£·¡¡£´£¹¡¡£¶£¶¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£±£±

¾õÂÖ£·¡§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£±£±¡¡¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£²£²¡¡£³£·¡¡£´£¹¡¡£¶£¶¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡£¶¡¡

¾õÂÖ£¸¡§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¶¡¡¡¡¡¡¡Ý¡Ý¡Ý¡ä¡¡£±£±¡¡£²£²¡¡£³£·¡¡£´£¹¡¡£¶£¶¡¡£·£³¡¡£¸£´
¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
 
¤è¤Ã¤Æ¡¢¼è¤ê½ü¤«¤ì¤¿¥Ç¡¼¥¿¤Ïʤٴ¹¤¨¤¬ºÑ¤ó¤Ç¤¤¤ë¡£

¡¡¼¡¤Ë¡¢ºÇ½é¤Î¥Ò¡¼¥×¤ò¹½À®¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤ë¡£

¥¹¥Æ¥Ã¥×£±¡¡Ç¤°Õ¤Î£²Ê¬ÌÚ¤òÍ¿¤¨¤ë¡£¤³¤Î£²Ê¬ÌڤγÆĺÅÀ¤Î¥Ç¡¼¥¿¤ÎÃͤò¤½¤ì¤¾¤ì
¡¡¡¡¡¡¡¡  ¡¡£è(1)¡¢£è(2) ‰ ¤£è(3) ‰ ¤...¤ò¤¹¤ë¡£
¥¹¥Æ¥Ã¥×£²¡¡¤³¤Î£²Ê¬Ìڤǡ¢»Þ¤¬£±Ëܤâ½Ð¤Æ¤¤¤Ê¤¤ÄºÅÀ¡¢¤Ä¤Þ¤ê
¡¡¡¡¡¡¡¡¡¡ ¡¡£è(k),£è(k+1)¡¢... ‰ ¤£è(n)¡¡¡Êk=[n/2]+1¡Ë
¡¡¡¡¡¡¡¡¡¡  ¤Ï¡¢²¼°Ì¤Ë¥Ç¡¼¥¿¤ò»ý¤¿¤Ê¤¤¤¿¤á¡¢¥Ò¡¼¥×¤Î¾ò·ï¤¬Ëþ­¤µ¤ì¤Æ¤¤¤ë¤È
¡¡¡¡¡¡¡¡  ¡¡²ò¼á¤Ç¤­¤ë¡£¡¡
¥¹¥Æ¥Ã¥×£³¡¡»Ä¤ê¤ÎĺÅÀ¤ò£è(k-1),£è(k-2),...,£è(1)¤Î½ç¤Ë¤È¤ê¤¢¤²¡¢¤½¤ÎĺÅÀ¤ò
            ²¼°Ì¤ÎÉôʬÌڤκ¬¡Ê£è(1)¡Ë¤È¤ß¤¿¤Æ¥Ò¡¼¥×¤ò¹½À®¤·¤Æ¤¤¤¯¡£¤½¤ÎºÝ¤Ë¤Ï¡¢
            Á°µ­¤ÎshiftdownÁàºî¤ò»È¤¦¡£

¡¡¥Ò¡¼¥×À¸À®¤ÎÎã

½é´ü¾õÂÖ¡§
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡£²£±
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£µ£³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£±£²
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡£´£¶¡¡¡¡¡¡¡¡¡¡£¸£·¡¡¡¡¡¡£µ£¹¡¡ ¡¡¡¡¡¡¡¡£´£°¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡£·£°
¡¡ 
¾õÂÖ£²¡§½é´ü¾õÂ֤ˤª¤¤¤Æ£·£°¡¤£´£°¡¤£µ£¹¡¤£¸£·¤Ï²¼°Ì¤Ë¥Ç¡¼¥¿¤ò»ý¤¿¤Ê¤¤¤Î¤Ç¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¤Þ¤º¡¢£´£¶¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£
 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡£µ£³¡¡¡¡¡¡¡¡¡¡¡¡¡¡  ¡¡¡¡£±£²
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡£·£°¡¡¡¡¡¡¡¡¡¡   £¸£·¡¡¡¡£µ£¹¡¡¡¡¡¡  ¡¡¡¡£´£°¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡ £´£¶
 
¾õÂÖ£³¡§¾õÂÖ£²¤Ë¤ª¤¤¤Æ£·£°¡¤£¸£·¡¤£µ£¹¡¤£´£°¡¤£´£¶¤Ï¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¼¡¤Ë£±£²¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ £²£±
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ £µ£³¡¡ ¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡£µ£¹
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡ £·£°¡¡¡¡¡¡¡¡¡¡  £¸£·¡¡¡¡£±£²¡¡¡¡¡¡¡¡¡¡  £´£°¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡ £´£¶
 
¾õÂÖ£´¡§¾õÂÖ£³¤Ë¤ª¤¤¤Æ£µ£¹¡¤£·£°¡¤£¸£·¡¤£±£²¡¤£´£°¡¤£´£¶¤Ï¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¼¡¤Ë£µ£³¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ £²£±
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ £¸£·¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£µ£¹
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡ £·£°¡¡¡¡¡¡¡¡¡¡  £µ£³¡¡¡¡£±£²¡¡¡¡¡¡¡¡¡¡  £´£°¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡ £´£¶
 
¾õÂÖ£µ¡§¾õÂÖ£´¤Ë¤ª¤¤¤Æ£¸£·¡¤£µ£¹¡¤£·£°¡¤£µ£³¡¤£±£²¡¤£´£°¡¤£´£¶¤Ï¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¼¡¤Ë£²£±¤Ë¤Ä¤¤¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡£¸£·
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡£·£°¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£µ£¹
¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡ £´£¶¡¡¡¡¡¡¡¡¡¡  £µ£³¡¡¡¡£±£²¡¡¡¡¡¡¡¡  ¡¡£´£°¡¡
¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
¡¡ £²£±
 
¤è¤Ã¤Æ¡¢Ç¤°Õ¤ËÍ¿¤¨¤¿£²Ê¬ÌÚ¤ËÂФ·¤Æ¡¢¥Ò¡¼¥×¤¬¹½À®¤Ç¤­¤¿¡£

¡¡¾åµ­¤ÇÀâÌÀ¤·¤¿¹Í¤¨¤ò¤â¤È¤Ë¡¢¥Ç¡¼¥¿¤Îʤٴ¹¤¨¤ò¹Ô¤Ê¤¦¡£¼ÂºÝ¤Ë·×»»µ¡¤Ç¹Ô¤Ê¤¦¾ì¹ç¡¢£²Ê¬ÌÚ¤òɽ¸½¤¹¤ë¤³¤È¤ÏÌÌÅݤʤ³¤È¤Ç¤¢¤ë¡£¤½¤³¤Ç¡¢º£²ó¤ÏÇÛÎó¤ò¹©Éפ·£²Ê¬Ìڤˤߤ¿¤Æ¤Æ¤ª¤³¤Ê¤¦¡£²¼µ­¤Î¤è¤¦¤ÊÇÛÎó¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£

¡¡¡¡ ------¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü----
¡¡¡¡¡Ã£è(1)¡Ã£è(2)¡¡£è(3)¡Ã£è(4)¡¡£è(5)¡¡£è(6)¡¡£è(7)¡Ã£è(8)¡¡£è(8)¡¦¡¦¡¦
     ------¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü-----¡Ü----
 
Êص¹Åª¤Ë¡¢ÇÛÎó¤Î¶èÀÚ¤ê¤òÆþ¤ì¤Æ¤¤¤ë½ê¤ÈÆþ¤ì¤Æ¤¤¤Ê¤¤½ê¤¬¤¢¤ë¡£¤³¤ì¤Ï¡¢£²Ê¬Ìڤγ¬ÁؤòÌÀ¤é¤«¤Ë¤¹¤ë¤¿¤á¤Ç¤¢¤ë¡£¾åµ­ÇÛÎó¤Ï¡¢²¼µ­¤Î£²Ê¬ÌÚ¤òɽ¸½¤·¤Æ¤¤¤ë¤³¤È¤òÍý²ò¤·¤Æ¤¤¤¿¤À¤­¤¿¤¤¡£
 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(1)
                    ¡¡¡¡¡¡        ¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ £è(2)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡£è(3)
        ¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ý¡Ý¡Ý¡Ü¡Ý¡Ý¡Ý¡Ý¡Ý¡Ã
¡¡¡¡¡¡£è(4)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£è(5)         £è(6)                   £è(7)
  ¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã¡¡¡¡¡¡¡¡¡¡¡Ã¡Ý¡Ý¡Ü¡Ý¡Ý¡Ã
 £è(8)       £è(9)       £è(10)
¡¡¥¢¥ë¥´¥ê¥º¥à¤Î¿Ê¹Ô¤È¤È¤â¤Ë¥Ò¡¼¥×¤¬½Ì¾®¤¹¤ë¤¿¤á¡¢ÇÛÎó¤Î¸åÈø¤¬¶õ¤È¤Ê¤ë¡£¤½¤³¤Ç¡¢¥Ò¡¼¥×¤«¤é¼è¤ê½Ð¤·¤¿¥Ç¡¼¥¿¤òÇÛÎó¤Î¸å¤í¤«¤é½ç¤ËµÍ¤á¤Æ¹Ô¤¯¤³¤È¤Ë¤è¤ê¡¢¥½¡¼¥È¤¬´°Î»¤·¤¿»þÅÀ¤Ç¡¢ÇÛÎóÆâ¤Ë¥Ç¡¼¥¿¤¬Ê¤ÙÂؤï¤Ã¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ë¡£

¡¡ÇÛÎó¤Î¾ì¹ç¤ÎÎã

¡Ê£±¡Ë¡¡½é´ü¥Ò¡¼¥×¤ÎÀ¸À®

½é´ü¥Ç¡¼¥¿¡§


 	21  53  12  46  87  59  40  70
 
¾õÂÖ£²¡§½é´ü¾õÂ֤ˤª¤¤¤Æ£·£°¡¤£´£°¡¤£µ£¹¡¤£¸£·¤Ï²¼°Ì¤Ë¥Ç¡¼¥¿¤ò»ý¤¿¤Ê¤¤¤Î¤Ç¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¤Þ¤º¡¢£´£¶¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

	21  53  12  70  87  59  40  46
 
¡¡¡¡¡¡ ¾õÂÖ£³¡§¾õÂÖ£²¤Ë¤ª¤¤¤Æ£·£°¡¤£¸£·¡¤£µ£¹¡¤£´£°¡¤£´£¶¤Ï¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¼¡¤Ë£±£²¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

	21  53  59  70  87  12  40  46
¾õÂÖ£´¡§¾õÂÖ£³¤Ë¤ª¤¤¤Æ£µ£¹¡¤£·£°¡¤£¸£·¡¤£±£²¡¤£´£°¡¤£´£¶¤Ï¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¼¡¤Ë£µ£³¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

	21  87  59  70  53  12  40  46
¾õÂÖ£µ¡§¾õÂÖ£´¤Ë¤ª¤¤¤Æ£¸£·¡¤£µ£¹¡¤£·£°¡¤£µ£³¡¤£±£²¡¤£´£°¡¤£´£¶¤Ï¡¢¥Ò¡¼¥×¤Î¾ò·ï¤òËþ­¤·¤Æ¤¤¤ë¤È¹Í¤¨¤é¤ì¤ë¡£¼¡¤Ë£²£±¤ò£²Ê¬Ìڤκ¬¤È¤ß¤¿¤ÆshiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£

        87  70  59  46  53  12  40  21
¡Ê£²¡Ë¡¡¥½¡¼¥È ½é´ü¾õÂÖ¡§

	87  70  59  46  53  12  40  21
¾õÂÖ£²¡§ÀèƬ¤Î£¸£·¡Ê£è(1)¡Ë¤ò¼è¤ê½Ð¤·¤¹¡£¡¡£²£±¡Ê£è(k)¡Ë¤ò£²Ê¬Ìڤκ¬¡Ê£è(1)¡Ë¤Ë°ÜÆ°¤·¡¢shiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£¡¡¼è¤ê½Ð¤·¤¿£¸£·¤ÏÇÛÎó¤ÎºÇ¸å¤Ë³ÊǼ¤¹¤ë¡£

	70  53  59  46  21  12  40  87
¾õÂÖ£³¡§ÀèƬ¤Î£·£°¡Ê£è(1)¡Ë¤ò¼è¤ê½Ð¤·¤¹¡££´£°¤ò£²Ê¬Ìڤκ¬¡Ê£è(1)¡Ë¤Ë°ÜÆ°¤·¡¢shiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£¡¡¼è¤ê½Ð¤·¤¿£·£°¤ÏÇÛÎó¤ÎºÇ¸å¤«¤é£²ÈÖÌܤˤ˳ÊǼ¤¹¤ë¡£

	59  53  40  46  21  12  70  87
¾õÂÖ£´¡§ÀèƬ¤Î£µ£¹¡Ê£è(1)¡Ë¤ò¼è¤ê½Ð¤¹¡££±£²¤ò£²Ê¬Ìڤκ¬¡Ê£è(1)¡Ë¤Ë°ÜÆ°¤·¡¢shiftdownÁàºî¤ò¹Ô¤Ê¤¦¡£¡¡¼è¤ê½Ð¤·¤¿£µ£¹¤ÏÇÛÎó¤ÎºÇ¸å¤«¤é£³ÈÖÌܤ˳ÊǼ¤¹¤ë¡£

	53  46  40  12  21  59  70  87
¾õÂÖ£µ¡§°Ê²¼Æ±ÍͤÊÁàºî¤ò·«¤êÊÖ¤¹¡£

	46  21  40  12  53  59  70  87
¾õÂÖ£¶¡§

	39  20  12  46  53  59  70  87
¾õÂÖ£·¡§

        21  12  40  46  53  59  70  87
¾õÂÖ£¸¡§

	12  21  40  46  53  59  70  87
¡¡¾åµ­¤Î¹Í¤¨¤ò¥×¥í¥°¥é¥à¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£

 1:  void HeapSort(int data[],int n)  {
 2: 	int top,bottom,tmp;
 3:
 4: 	bottom = n/2 +1;
 5: 	top = n;
 6: 	while (bottom > 0) {
 7:	        bottom--;
 8: 		Shiftdown(data,top,bottom);
 9: 	}
10:  	while (top > 0) {
11:  		tmp = data[0];
12:  		data[0] = data[top];
13:  		data[top] = tmp;
14:  		top--;
15:  		Shiftdown(data,top,bottom);
16:  	}
17:  }
18:  
19:  void Shiftdown(int data[],int top,int bottom) {
20:  	int i, tmp;
21:  	
22:  	i = 2 * bottom;
23:  	while(i <= top) {
24:  		if(i < top && data[i+1]>data[i])  i++;
25:  		if(data[bottom]>=data[i])  break;
26:  		tmp = data[bottom];
27: 		data[bottom] = data[i];
28:  		data[i] = tmp;
29:  		bottom = i;
30:  		i = 2 * bottom;
31:  	}
32:  }
¡¡£¶¡Á£¹¤Ç½é´ü¤Î¥Ò¡¼¥×¤òºîÀ®¤·¡¢£±£°¡Á£±£¶¤Ç¥Ò¡¼¥×¤ÎºÆ¹½À®¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤ë¡£
¡¡¥Ò¡¼¥×¥½¡¼¥È¤Î·×»»»þ´ÖÎ̤ϡ¢£Ï¡Ê£î£ì£ï£ç£î¡Ë¤Ç¤¢¤ë¡£´Êñ¤Ë¡¢Íýͳ¤ò½Ò¤Ù¤ë¡£¼ç¤Ë´Ø¿ôshiftdownÆâ¤ÎÆþ¤ì´¹¤¨¤Î²ó¿ô¤ËÃåÌܤ·¤Æ¤ä¤ì¤Ð¤è¤¤¡£¤Ä¤Þ¤ê¡¢£²£¶¡Á£²£¸¤Î¼Â¹Ô²ó¿ô¤Ç¤¢¤ë¡££²Ê¬Ìڤꬤ«¤é½ç¤Ë¡¢²¼°Ì¤ÎÉôʬÌÚ¤ÎĺÅÀ¤Ë¤¢¤ë¥Ç¡¼¥¿¤ÈÈæ³Ó¤¹¤ë¤¿¤á¡¢£±²ó¤ÎshiftdownÁàºî¤Ç¤Ï¡¢£ì£ï£ç¡Ê£î¡Ë²ó¡Ê£ì£ï£ç¤È¤ÏÂпô´Ø¿ô¤Ç¤¢¤ê¡¢¤³¤Î¾ì¹ç£²Ê¬ÌڤǤ¢¤ë¤¿¤áÂпô¤ÎÄì¤ò£²¤È¤·¤Æ¹Í¤¨¤Æ¤¤¤ë¡££î¤Ï¥Ç¡¼¥¿¤Î¸Ä¿ô¤Ç¤¢¤ë¡£¡ËÈæ³Ó¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ë¡£
¡¡´Ø¿ôshiftdown¤Î¸Æ¤Ð¤ì¤ë²ó¿ô¤Ï¡¢¥Ç¡¼¥¿¤Î¸Ä¿ô£î¤ËÈæÎ㤷¤Æ¤¤¤ë¡£¤½¤Î¤¿¤á¡¢£î¡ö£ì£ï£ç¡Ê£î¡Ë¤¬ÆÀ¤é¤ì¤ë¡£´ðËÜŪ¤Ê¹Í¤¨Êý¤Ï°Ê¾å¤ÎÄ̤ê¤Ç¤¢¤ë¡£
¡¡¥Ò¡¼¥×¥½¡¼¥È¤Ï¡¢¥¯¥¤¥Ã¥¯¥½¡¼¥È¤ËÈæ¤Ù¤ÆÊ¿¶ÑÌó£²ÇܤΥ¹¥Ô¡¼¥É¤òÍפ¹¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢¥Ò¡¼¥×¥½¡¼¥È¤Ï¡¢¤É¤Î¤è¤¦¤ÊÇÛÃ֤Υǡ¼¥¿¤Ë¤â¾ï¤Ë£Ï¡Ê£î£ì£ï£ç£î¡Ë¤Ç½èÍý¤¬¤Ê¤µ¤ì¡¢³°Éôµ­²±ÁõÃÖÆâ¤Î¥Ç¡¼¥¿¤Ë¤âŬÍѲÄǽ¤Ê¤³¤È¤«¤é¡¢ÍøÍÑÅ٤ι⤤¥¢¥ë¥´¥ê¥º¥à¤Ç¤¢¤ë¤È¤¤¤¨¤ë¡£

Ìá¤ë

¥¢¥×¥ì¥Ã¥È¤ËÌá¤ë

a93sj030@j.dendai.ac.jp