OïŒn log nïŒä»¥äžã®è€éãã§ãéšåçã«é åºä»ããããããŒã¿ã䞊ã¹æ¿ããå Žåã¯é«éåãããããŒã¿ãæåã«äžŠã¹æ¿ããããå Žåã¯è€é床OïŒnïŒã«ãªããŸãã ãããããã®ãããªå®£èšãããããããã£ãæã€ã¢ã«ãŽãªãºã ã¯ããã ãã§ã¯ãããŸããã åæ§ã®è€éããæã€å°ãªããšã2ã€ã®å€ããå°ãªããããç¥ãããæ¹æ³ããããŸã-ãããã¯SmoothsortãšShellã®äžŠã¹æ¿ãã§ãã
ããããããããåæ§ã®è€éããæã£ãŠãããããšãã£ãŠããã¹ãŠãåçã«é«éã«åäœããããšãæå³ããããã§ã¯ãããŸããã ç°ãªãããŒã¿ã§åœŒãã®å®éã®é床ãæ¯èŒãã圌ãã®ä»äºã§èª°ãåªããŠãããã確èªããããšããŸããã
éåžžãåãããŒã¿ã§åãè€éããæã€ç°ãªãã¢ã«ãŽãªãºã ã®æäœã®ãªã¢ã«ã¿ã€ã ã¯ãæ°åç°ãªãå ŽåããããŸãã ããããªãèµ·ããã®ããèŠããŠããŠã£ãããã£ã¢ã«ãã¢ã«ãŽãªãºã ã«ã¯è€éãOïŒn log nïŒããšããèªå¥ã®æå³ãèããŠã¿ãŸãããã
OïŒn log nïŒã¢ã«ãŽãªãºã ã®è€éãã¯ãnã倧ããå Žåãã¢ã«ãŽãªãºã ã®å®è¡æéïŒãŸãã¯æäœã®ç·æ°ïŒãCã»n log nïŒCã¯ç¹å®ã®æ£ã®å®æ°ïŒä»¥äžã§ããããšãæå³ããŸãã
ãããŠããã®ä¿æ°Cã¯ãã¢ã«ãŽãªãºã ã®åäœã®ãªã¢ã«ã¿ã€ã ã«åœ±é¿ããŸãã ã¢ã«ãŽãªãºã ãè€éã§ããã°ããã»ã©ãããé«åºŠãªããŒã¿æ§é ã䜿çšãããå¿ èŠãªãã¹ãŠã®å€æ°ãšæ§é ããµããŒãããããã«ããã°ã©ã ãå®è¡ããéã«ããå€ãã®æäœãå®è¡ããå¿ èŠããããŸãã ã€ãŸããä¿æ°Cãšãªã¢ã«ã¿ã€ã ã倧ãããªããŸãã ãã¡ããããã®ä¿æ°ã¯ç¹å®ã®å®è£ ã«ãäŸåããŸãããäœæããã³ãŒãã«æ³šæãæããéçºèšèªã®æ©èœãç¥ã£ãŠããå Žåãã¢ã«ãŽãªãºã ã¯ãã®å®æ°ã«äž»ã«è²¢ç®ããŸãã
ãã®ãããéšåçã«é åºä»ããããããŒã¿ã®å Žåã«ãããã®ã¢ã«ãŽãªãºã ã®ãããããå®éã®ããã©ãŒãã³ã¹ã²ã€ã³ãæäŸãããã®ã²ã€ã³ãã©ãã»ã©éèŠã§ãããã確èªããããšã¯èå³æ·±ããã®ã§ããã ãã®ããã«ãããã€ãã®å®éšãè¡ãããŸããã ãããããŸã第äžã«ã詳现ã説æããããšãªããäžèšã®ã¢ã«ãŽãªãºã ãã©ã®ããã«æ©èœããããæãåºããŠãã ããã èå³ããªã人ã¯ããã«æ¯èŒããŠãã ããã
æ¯èŒã¢ã«ãŽãªãºã
ãã£ã ãœãŒã
äž»ãªã¢ã€ãã¢ãåŒçšããããã«ã ããã«è¯ã説æããããŸã ïŒ
- ç¹å¥ãªã¢ã«ãŽãªãºã ãå ¥åé åããµãé åã«åå²ããŸã
- åãµãã¢ã¬ã€ã¯ãéåžžã®æ¿å ¥ãœãŒãã«ãã£ãŠãœãŒããããŸãã
- ãœãŒãããããµãé åã¯ãå€æŽãããããŒãžãœãŒãã䜿çšããŠåäžã®é åã«ã¢ã»ã³ãã«ãããŸãã
æé©ãªå Žåã®è€éãïŒå ¥åããŒã¿ã¯ä»»æã®é åºã§äžŠã¹æ¿ããããå Žåã«ãã£ãŠã¯éãå¿ èŠã§ãïŒã¯OïŒnïŒã§ãããäžè¬ã«OïŒn log nïŒããæªããããŸããã
OïŒnïŒè¿œå ã®ã¡ã¢ãªãå¿ èŠã§ãã
倧ããªå©ç¹ã¯ãã¢ã«ãŽãªãºã ãä»ã®éåžžã«åçŽãªã¢ã«ãŽãªãºã ã®çµã¿åããã§ãããããç°ãªãããŒã¿æ§é ãæã€é«åºŠãªæäœãå¿ èŠãšããªãããšã§ãã ãããã£ãŠãè¯å¥œãªããã©ãŒãã³ã¹ãæåŸ ãããŸãã
ã¹ã ãŒãºãœãŒã
æªåé«ãE.V. Dijkstroyã«ãã£ãŠ1981幎ã«çºæããããã€ããªããŒãïŒå¿ èŠã«å¿ããŠãã©ããããªã©ïŒã䜿çšããŠãœãŒãããããŒããœãŒãã¢ã€ãã¢ã®éçºã§ãã
ãŸããHeapsortã®ä»çµã¿ãæãåºãããŠãã ããïŒ
- 1ã€ã®èŠçŽ ãè¿œå ããŠããŒããæ§ç¯ããŸãïŒããããã®è€éãOïŒlog nïŒãåèšOïŒn log nïŒïŒ
- 空ã«ãªããŸã§ãæ§ç¯ãããããŒãã®ã«ãŒãã«ããæ倧èŠçŽ ãååŸããŸãã ã«ãŒããåé€ããããšãããŒãã¯2ã€ã®ç¬ç«ãããã®ã«åå²ããããããOïŒlog nïŒã®åŸã«ãããã1ã€ã«ãŸãšããå¿ èŠããããŸãã nåã®èŠçŽ ã®åèš-OïŒn log nïŒ
è€éãOïŒnïŒã§æåã®ã¹ããããå®äºããããšãã§ããæé©åããããŸããã2çªç®ã®ã¹ãããã¯äŸç¶ãšããŠè€éãOïŒn log nïŒã®ãŸãŸã§ãã
ã¢ã«ãŽãªãºã ã¯OïŒ1ïŒè¿œå ã¡ã¢ãªãå¿ èŠãšããããŒãã¯å ã®ããŒã¿é åã«çŽæ¥æ ŒçŽãããŸãã
ãã€ã¯ã¹ãã©ã¯ãã¢ã«ãŽãªãºã ã®1ã€ã®ãã€ããªããŒãããã¬ãªãã«ãã®ç¹æ®ãªæ°å€ã«åºã¥ããŠæ§ç¯ãããã¬ãªãã«ãããŒãã®é åºä»ãã»ããã«çœ®ãæããããšãææ¡ããŸããã
ã¬ãªãã«ãæ°ã¯ã次ã®ããã«ååž°çã«å®çŸ©ãããŸãã
ãã®ã·ãŒã±ã³ã¹ã®æåã®ããã€ãã®ã¡ã³ããŒã¯æ¬¡ã®ãšããã§ããLïŒ0ïŒ= 1ãLïŒ1ïŒ= 1ãLïŒiïŒ= LïŒi-2ïŒ+ LïŒi-1ïŒ+ 1
1ã3ã5ã9ã15ã25ã41ã...
Leonardoã®kçªç®ã®ããŒã㯠ã次ã®æ¡ä»¶ãæºããé ç¹ã®æ°LïŒkïŒãæã€ãã€ããªããªãŒã§ãã
- ã«ãŒãã«æžãããæ°ã¯ããµãããªãŒã®æ°ããå°ãããããŸããïŒã ãããããããããŸãïŒ
- å·Šã®ãµãããªãŒã¯ãã¬ãªãã«ãã®ïŒk-1ïŒçªç®ã®å±±ã§ãã
- å³-ïŒk-2ïŒ-th
ããŒãã¯ãµã€ãºé ã«äžŠã¹ãå¿ èŠãããïŒæ倧ã¯å·ŠïŒããã®ã«ãŒãã®å€ã¯å·Šããå³ã«æžå°ããŠã¯ãªããŸãããããã¯ãå³ç«¯ã®ããŒãã®ã«ãŒããåžžã«æ§é ã®æ倧èŠçŽ ã«ãªãããšãæå³ããŸãã æ§é ã¯å ã®é åã«ä¿åãããè¿œå ã¡ã¢ãªã®ãµã€ãºã¯OïŒ1ïŒã§ãã
ä»»æã®èªç¶æ°ã¯ãã¬ãªãã«ãæ°ã®åèšã«å解ã§ããŸããã€ãŸããäžèšã®æ§é ã¯ãä»»æã®æ°ã®æ°ã«å¯ŸããŠæ§ç¯ã§ããŸãã
ã¬ãªãã«ãã®æ§é ã®äŸã¯ã13ã®èŠçŽ ã«å¯Ÿå¿ããŠããŸãã 3ã€ã®ããŒãã䜿çšãããŸãïŒ4çªç®ã2çªç®ã1çªç®ã
ãã®ãããªæ§é ã«èŠçŽ ãè¿œå ããã«ã¯ããµã€ãºã®åèšãèŠçŽ ã®æ°ããæ°ãšçãããªãããã«ããŒãã®äžéšãåæ§ç¯ããããŒãã®ã«ãŒããæé ã§äžŠã¹ãããŠããããšã確èªããå¿ èŠããããŸãã ãã®ãããªæäœã®è€éãã¯OïŒlog nïŒä»¥äžã§ãã
ã¢ã€ãã ãè¿œå ãããšããããŒããåæ§ç¯ããå¿ èŠããããŸãïŒåçã®ã¬ãªãã«ãã®ããŒãã®ããããã£1ã¯åŸ©å ãããŸããïŒ
æ倧å€ã®æœåºã¯ãèŠçŽ ã®è¿œå ã«äŒŒãŠãããOïŒlog nïŒä»¥äžã®è€éãããããŸãã
Smoothsortã®ãœãŒãã¢ã«ãŽãªãºã èªäœã¯ãHeapsortã®ããã«2段éã§æ©èœããŸãã
- äžåºŠã«1ã€ãã€è¿œå ããããšã§ããã¹ãŠã®èŠçŽ ã«å¯ŸããŠå€ãã®LeonardoããŒããæ§ç¯ãããŸãïŒåèŠçŽ ã«å¯ŸããŠOïŒlog nïŒä»¥äžïŒ
- 次ã«ãæ§ç¯ãããæ§é ããæ倧èŠçŽ ãæœåºããïŒæ倧ã¯åžžã«å³ç«¯ã®ããŒãã®ã«ãŒãã«ãªããŸãïŒãå¿ èŠã«å¿ããŠæ§é ã埩å ãããŸãïŒåèŠçŽ ã®OïŒlog nïŒä»¥äžïŒ
ãã®ãããªæ§é ã䜿çšããå©ç¹ã¯ãæ¢ã«ãœãŒããããå ¥åã·ãŒã±ã³ã¹ã®å ŽåãããŒããæ§ç¯ããŠãã¹ãŠã®èŠçŽ ãæœåºããæäœã®ç·è€éããOïŒnïŒã«ãªãããšã§ãã ãããŠããœãŒããããããŒã¿ã®é åºä»ãã®åºŠåããäœäžãããšãè€é床ã¯OïŒnïŒããOïŒn log nïŒã«ã¹ã ãŒãºã«ïŒæ»ããã«ïŒå¢å ãããšäž»åŒµãããŠããŸãã ãããã£ãŠãåå-Smoothsortã
äžè¬çã«ããã®ã¢ã«ãŽãªãºã ã¯ç°¡åãªãã®ã§ã¯ãããŸããããããã«æ確ã«èª¬æãããŠããŸããã ææïŒ
ãŠã£ãããã£ã¢ã®èšäº
å ã®èšäºã¯ç解ã§ããªããããç解ããã«ã¯æéãããããŸã
Hartwig Thomasãã³ã¡ã³ãããå ã®èšäºã¯åãã§ãããéåžžã®ãã©ã³ã+説æã³ã¡ã³ãã§ãã ããããããã¯ãŸã ç°¡åã«ãªããŸãã:)
K. Schwarzã®ã¢ã«ãŽãªãºã ã®ç 究ã¯ãã§ã«æ確ã«ãªã£ãŠããŸãããããã€ãã®éèŠãªæé©åã¯ãŸã£ãã説æãããŠããŸããã ããããã€ã©ã¹ããæ¿å ¥ãããŸãã
ShellsortïŒã·ã§ã«ãœãŒãïŒ
ã·ã§ã«ãœãŒãã¯ãæ¿å ¥ããœãŒãããããã®ã¢ããªã³ã§ãã 1åã®ãã¹ã®ä»£ããã«è€æ°ã®ãã¹ãå®è¡ããiçªç®ã®ãã¹ã§ãäºãã«è·é¢d iã«ããèŠçŽ ã®ãµãé åããœãŒãããŸãã
ãã®å ŽåãæåŸã®ãã¹ã§ãd iã¯1ã«çãããªããã°ãªããŸããïŒã€ãŸããæåŸã®ã¹ãããã¯æ¿å ¥ã«ããéåžžã®ãœãŒãã§ãïŒãããã«ãããã¢ã«ãŽãªãºã ã®æ£ç¢ºããä¿èšŒãããŸãã
ããšãã°ã12èŠçŽ ã®é åã䞊ã¹æ¿ããå¿ èŠããããšããŸãããã¹ã®æ°ã¯3ãd 1 = 5ãd 2 = 3ãd 3 = 1ã§ãã
æåã®ã¹ãããã§ã次ã®é åããœãŒããããŸãã
ïŒa1ãa6ãa11ïŒãïŒa2ãa7ãa12ïŒãïŒa3ãa8ïŒãïŒa4ãa9ïŒãïŒa5ãa10ïŒ
2çªç®ïŒ
ïŒa1ãa4ãa7ãa10ïŒãïŒa2ãa5ãa8ãa11ïŒãïŒa3ãa6ãa9ãa12ïŒ
ãããŠã3çªç®ã®é åïŒa1ã...ãa12ïŒã§å®å šã«
æ¿å ¥ã®éåžžã®ãœãŒãã«å¯Ÿããå©ç¹ã¯ãæåã®ãã¹ã§é åã®èŠçŽ ãiã§ã¯ãªãd iã®ã¹ãããã§ç§»åããæåŸã®ãã¹ã§ç¹å®ã®ããŒã«ãªãã£ã«æ¢ã«å°éããŠããïŒèŠçŽ ãæçµçãªå Žæã«è¿ãïŒãããå€æ°ãçæããå¿ èŠããªãããšã§ã亀æã
ã¢ã«ãŽãªãºã ã®è€éãã¯ããã¹ã®æ°ãšd iã®å€ã®éžæã«äŸåãã倧ããç°ãªãå¯èœæ§ããããŸãã ãŠã£ãããã£ã¢ã«ã¯ç¹å¥ãªããŒãã«ããããŸãã ãã¹ãã§ã¯ã ããã§èª¬æãããªãã·ã§ã³ãéžæããŸãããææªã®å Žåããã®è€éãã¯OïŒn 4/3 ïŒã§ãããå¹³åã§OïŒn 7/6 ïŒã§ãã
ããŒã¿ãæåã«æ£ããé åºã§ãœãŒããããŠããå Žåãåäžã®äº€æã¯è¡ãããããã¹ãŠã®ãã¹ããã¢ã€ãã«ãç¶æ ã«ãªããŸãã ãããã£ãŠããã®å Žåã®è€éãã¯ãã¹ã®æ°ã®ã¿ã«äŸåããŸãã ãããã®æ°ãåºå®ãããŠããå Žåã¯ãOïŒnïŒã ãã«ãªããŸãã
OïŒ1ïŒè¿œå ã®ã¡ã¢ãªãå¿ èŠã§ãã
詳现ã¯ãã¡ã ã ãã¡ã ã ãã¡ããã芧ãã ãã ã
æ¯èŒ
å®éããããæãèå³æ·±ãéšåã§ããäžèšã®ãã¹ãŠã®æ¹æ³ãç°ãªãããŒã¿ã§ãã¹ããããªã¢ã«ã¿ã€ã ãæ¯èŒããããšã§ãã
次ã®å®è£ ã¯ãã¹ãã«åå ãããã¹ãŠã®ã³ãŒãã¯çŽç²ãªCã§æžãããŠããŸãã
- TimSortã¯ãDim R. Maclverã®å®è£ ã§ãTimSortã«é¢ããèšäº -æé©åãããæé©ãªå®è£
- SmoothSortã¯ç§ã®å®è£
ã®1ã€ã§ãäœãšãæéã§èšè¿°ã§ããŸãã
äžè¬ã«ããã®ã¢ã«ãŽãªãºã ã®äœæã¯å€å°å¹ççã§ãããããã»ã©åçŽã§ã¯ãããŸããã ããªãã¯ããããããéããããæé©ã«æžãããšãã§ããŸããã4åã®è©Šè¡ã®åŸãç§ã¯ç¶è¡ããªãããšã«æ±ºããŸãã:) - ShellSort- ããããã®äŸã«åºã¥ããå®è£
- ãŸããåŸæ¥ã®æ¹æ³ã«å¯Ÿããèæ ®ãããæ¹æ³ã®å©ç¹ãè©äŸ¡ã§ããããã«ãã¯ã€ãã¯ãœãŒããšããŒããœãŒãã®å®æçãªååž°çå®è£ ãæ¯èŒã«è¿œå ãããŸããã
è©Šéšãã©ã¡ãŒã¿
ãœãŒãã¢ã«ãŽãªãºã ã®å¿çæéïŒç§åäœïŒã®ã¿ã枬å®ããããã¹ãããŒã¿ã®çææéã¯èæ ®ãããŸããã§ããã åã¢ã«ãŽãªãºã ã¯åãããŒã¿ã§3åå®è¡ãããæè¯ã®çµæãèæ ®ãããŸããïŒãããã£ãŠãçæçãªã·ã¹ãã è² è·ã¯æ£çŽãªå®éšã«åœ±é¿ããŸããã§ãã:)ïŒ
éïŒHP dv3510erã©ããããããIntel Core 2 Duo 2GHzã2GB RAMã
OSïŒUbuntu 11.10
ç°ãªãããŒã¿ã§4ã€ã®å®éšãè¡ãããŸããã
å®éš1ïŒéåžžã®ããŒã¿ã®æäœ
ãã®å®éšã®ç®çã¯ãé åºä»ããããŠããªãä»»æã®ããŒã¿ã§ã¢ã«ãŽãªãºã ã®ããã©ãŒãã³ã¹ãæ¯èŒããããšã§ãã 10 8åã®10 8åã®ã©ã³ãã ãªèªç¶æ°ã®ã»ãããçæãããåã¢ã«ãŽãªãºã ã«ã€ããŠå¹³ååäœæéã枬å®ãããŸããã
ä»»æã®ããŒã¿ã®å Žåã«ãã¹ãããããã¹ãŠã®ã¢ã«ãŽãªãºã ã®è€éãã¯ïŒShellSortãé€ãïŒOïŒn log nïŒã§ãã å®éãããã§ã¯éåžžã«äžå®ã®Cã®åœ±é¿ã远跡ã§ããŸãã
ã芧ã®ãšãããããŒã¿æ§é ã䜿çšããªãã¢ã«ãŽãªãºã ã¯éåžžã«æ·±å»ã«é²æ©ããŠããŸãã 次ã«ãéšåçã«é åºä»ããããããŒã¿ãæ€èšããŸãã
å®éš2ïŒçãµã€ãºã®ç¬ç«ãããœãŒããããã°ã«ãŒã
æé ã§ãœãŒãããã10 8åã®ç°ãªãèªç¶æ°ãæå®ããŸãã ããããkåã®é£ç¶ããèŠçŽ ã§ã°ã«ãŒãåãããã¹ãŠã®ã°ã«ãŒããéã®é åºã«äžŠã¹æ¿ããŸãã
10åã®æ°åã®äŸïŒ1 2 3 4 5 6 7 8 9 10
k = 1ïŒ10 9 8 7 6 5 4 3 2 1
k = 3ïŒ8 9 10 5 6 7 2 3 4 1
k = 5ïŒ6 7 8 9 10 1 2 3 4 5
k = 10ïŒ1 2 3 4 5 6 7 8 9 10
ã°ã«ãŒãã¯ãä¿åãããŠããå€ã®ç¯å²å ã§éè€ããªããšããæå³ã§ãäºãã«ãç¬ç«ãããŠããŸãã ã€ãŸããä»»æã®ã°ã«ãŒãã®èŠçŽ ã¯ãå³åŽã®ãã¹ãŠã®ã°ã«ãŒãã®èŠçŽ ããã倧ãããå·ŠåŽã®èŠçŽ ãããå°ãããªããŸãã
10ã®çŽ¯ä¹ã«çãããã¹ãŠã®kã«ã€ããŠæž¬å®ãè¡ãããŸããã
次ã®ãã¿ãŒã³ã«æ°ä»ãããšãã§ããŸãã
- ã¯ã€ãã¯ãœãŒããšããŒããœãŒãã¯ãããŒã¿ãéšåçã«ãœãŒããããŠããããšã倧奜ãã§ãïŒäž¡æ¹ã®ã°ã©ããæ¯èŒããŠãã ããïŒã ããã¯æŒžè¿çãªè€éãã«ã¯åœ±é¿ããŸããããäœæ¥ã®é床ã¯äŸç¶ãšããŠå€§å¹ ã«åäžããŸã
- ãã£ã ãœãŒãã¯ãããŒã¿ãã©ã®é åºã§ãœãŒããããŠããããæ°ã«ããŸãããã©ã¡ãã®å Žåãéåžžã«é«éã«åäœããŸã
- Smoothsortã¯ãéšåçãªããŒã¿ã®é åºä»ããç¬èªã«ç解ããŠããŸãã ãã®ãã¹ãã®å®éã®ããã©ãŒãã³ã¹ã®åäžã¯ãå®å šã«ãœãŒããããããŒã¿ã§ã®ã¿é¡èã§ãã é åãå°æ°ã®å®å šã«ãœãŒããããããŒã¹ã§æ§æãããŠããå Žåã§ããããããåé 眮ããããã«ãã¢ã«ãŽãªãºã ã¯ã¬ãªãã«ãããŒãã䜿çšããŠèšå€§ãªæ°ã®æäœãå®è¡ããå¿ èŠããããŸãã
- Shellsortã¯ããã®è€éãïŒn = 10 8 n 7/6 > n log nïŒã«ãããããããSmoothsortãããçæéã§æ©èœããããšããããããŸãã ããã¯ãã¢ã«ãŽãªãºã ãæ¯èŒçåçŽã§ããããã§ãã ããããå®å šã«ãœãŒããããããŒã¿ã§ã¯ãåäžã®èŠçŽ ãåé 眮ããªããŠããShellsortã¯ãã¹ãŠã®ãã¹ãå®è¡ããå¿ èŠããããŸãã ãããã£ãŠãk = 10 8ã®å Žåãçµæã¯èæ ®ãããã¢ã«ãŽãªãºã ã®ã»ãšãã©ææªã§ãã
å®éš3ïŒããŸããŸãªãµã€ãºã®ãœãŒããããã°ã«ãŒããå€ã®ç¯å²ã®å¶é
éãããç¯å²ã®10 8åã®æŽæ°ãäžãããïŒãã®å Žå[0 ... 100000]ïŒããããã¯1ããkãŸã§ã®ä»»æã®ãµã€ãºã®ã°ã«ãŒãã«ãã£ãŠé åºä»ããããŸãã
ãã®ãããªããŒã¿ã»ããã¯ãã§ã«å®éã®ã¿ã¹ã¯ããã®ããŒã¿ãšäœããã®åœ¢ã§äžèŽããŠãããããDyceè¿æ¥ä¿æ°ãèšç®ããããã«ããããåŠçããå¿ èŠããããŸãã
ãã®äŸã§ã¯ãSmoothsortã¯æé©ãªåŽããã§ã¯ãªããHeapsortãããé·ãåäœããåãããã«åäœããŸãã ãã£ã ãœãŒãã¯åã³å ãè¡ã£ãŠããŸãã
å®éš4ïŒä»»æã®åé 眮
å¥ã®æ¹æ³ã§éšåçã«é åºä»ããããããŒã¿ãçæããŸãïŒ10 8åã®ä»»æã®èªç¶æ°ãååŸãããããããœãŒãããå Žæã«ãã2ã€ã®èŠçŽ ã®kåã®ä»»æã®é åãäœæããŸãã
ãããŠããã®å®éšã«ãããSmoothsortã¯æçµçã«ããªãŒãã³ãã«ãªããŸããå ¥åããŒã¿ã®ãœãŒãã®åºŠåããå¢ãã«ã€ããŠãå éãé¡èã«ãªããŸãã ããã¯ã以åã®å®éšãšã¯ç°ãªããããã§ã¢ã«ãŽãªãºã ãã¬ãªãã«ãã®ããŒããã移åãããã®ã¯ãåºå®æ°ã®èŠçŽ ãããã»ã©å€§ããããªãããã§ããããã¯ãããŒãå ã®èŠçŽ ã移åããããã®å€æ°ã®æäœã䌎ããŸããã ãããããã°ãããããšã圌ã¯åã³ãé·ããªãããããŸãã
ãŸãšã
ã芧ã®ãšããã説æããã¢ã«ãŽãªãºã ã¯å®çšçã§ãããããŸããŸãªæåãåããªããã¿ã¹ã¯ã«å¯ŸåŠããŠããŸãã 絶察çãªãªãŒããŒã¯Timsortã§ãããããã¯ãããŒã¿ã®é åºä»ãã®åºŠåããé«ããªããé¡èãªå éãæäŸããéåžžã®å Žåã¯Quicksortã¬ãã«ã§æ©èœããŸãã PythonãOpenJDKãAndroid JDKã«èªèãããçµã¿èŸŒãŸããŠããã®ãäžæè°ã§ã¯ãããŸããã
ãããã¯ãŒã¯äžã®Smoothsortã«ã€ããŠã¯ïŒä»ã®ã¢ã«ãŽãªãºã ãšæ¯èŒããŠïŒããªãå€ãã®æ å ±ããããå¶ç¶ã§ã¯ãããŸãããã¢ã€ãã¢ã®è€éããšç©è°ãéžãããã©ãŒãã³ã¹ã®ãããé©çšå¯èœãªæ¹æ³ãããã¢ã«ãŽãªãºã ã®æ¹è¯ã§ããå¯èœæ§ãé«ããªããŸãã ãã®ã¢ã«ãŽãªãºã ã®å®éã®ã¢ããªã±ãŒã·ã§ã³ã¯ãIMããã³VoIPã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãç®çãšããsofia-sipã©ã€ãã©ãªã®ã¿ã§ããã
ãã®ãã¹ãã§ã®Shellsortã®åºçŸã¯ããã®æŒžè¿çãªè€éããä»ã®2ã€ã®ã¢ã«ãŽãªãºã ããããã倧ãããããããªãè°è«ã®äœå°ã®ãããã€ã³ãã§ãã ãããã2ã€ã®å€§ããªå©ç¹ããããŸãïŒã¢ã€ãã¢ã®åçŽããšãã¹ããŒããšå®è£ ã®å®¹æãã§ã»ãŒåžžã«Smoothsortããã€ãã¹ããã¢ã«ãŽãªãºã ã§ã-äœæ¥ã³ãŒãã¯æ°åè¡ããããããŸããããTimsortãšSmoothsortã®é©åãªå®è£ ã«ã¯100è¡ä»¥äžãå¿ èŠã§ãã
ããã©ãŒãã³ã¹ãå ·äœçã«æ¯èŒããä»ã®ãã©ã¡ãŒã¿ãŒïŒè¿œå ã¡ã¢ãªã®äœ¿çšãªã©ïŒã«ã¯ç¹ã«çŠç¹ãåãããŠããªãããšã«æ³šæããŠãã ããã
ç§ã®äž»èŠ³çãªçµè«ã¯ãã©ã€ãã©ãªãŸãã¯å€§èŠæš¡ãªãããžã§ã¯ãã«åã蟌ãããã«éåžžã«åªãããœãŒãã¢ã«ãŽãªãºã ãå¿ èŠãªå ŽåãTimsortãæé©ã§ãããšããããšã§ãã æéããªããè€éãªã¢ã«ãŽãªãºã ãèšè¿°ããå¿ èŠããªããçµæãããã«å¿ èŠãšããå°ããªã¿ã¹ã¯ã®å Žåãã¢ã«ãŽãªãºã ãèšè¿°ããããæé«ã®ããã©ãŒãã³ã¹ãåŸããããããQuicksortãçãããšãã§ããŸãã
èªãã§ãããŠããããšãã ããªããèå³ãæã£ãŠããããšãé¡ã£ãŠããŸãã