ΠΊΠ°ΠΊΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ timsort
Timsort
Timsort β Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ.
ΠΠ°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΡΠΌ ΠΈ Π±ΡΠ» ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ Π’ΠΈΠΌΠΎΠΌ ΠΠ΅ΡΠ΅ΡΡΠΎΠΌ. ΠΠ° ΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄ΠΌΠ°ΡΠΈΠ²Ρ, Π°Π»Π³ΠΎΡΠΈΡΠΌ Π’ΠΈΠΌΠ° ΠΠ΅ΡΠ΅ΡΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π±Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΎΠΊ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Timsort ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π² Python ΠΈ GNU Octave, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² OpenJDK 7 ΠΈ Android JDK 1.5.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Timsort ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π¨Π°Π³ 1. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ minrun [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ΅ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΈΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, [math]\mathtt<\dfrac<
Π¨Π°Π³ 2. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π½Π° ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π¨Π°Π³ 3. Π‘Π»ΠΈΡΠ½ΠΈΠ΅ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π²Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ cΠΎΡ ΡΠ°Π½ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ β ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π°Π»Π°Π½ΡΠ°. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅, Π° Π·Π½Π°ΡΠΈΡ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΡΡΠ΅ΠΊΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠΈΠΌΠ΅Ρ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (Galloping Mode) [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²:
ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄Π»Ρ Π½ΠΈΡ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½Π° Π΅Ρ ΡΠ΅ΡΠ²ΡΡΡΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π ΠΈΡΠΎΠ³Π΅ [math]10000[/math] ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ [math]10000[/math] ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ. Timsort ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° Π½Π°Π·ΡΠ²Π°Π΅Ρ Π³Π°Π»ΠΎΠΏ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Timsort β ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ
Timsort: ΠΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ, O(n log n), ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°, Π° Π½Π΅ Π΄Π»Ρ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»Π΅ΠΉ.
Timsort β ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π½ Π² Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ. Tim Peters ΡΠΎΠ·Π΄Π°Π» Timsort Π΄Π»Ρ Python Π² 2001 Π³ΠΎΠ΄Ρ.
Timsort ΡΠ½Π°ΡΠ°Π»Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ Π½Π° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π‘ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅Π³ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Python, Java, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Android ΠΈ GNU Octave.
ΠΠΎΡΠ°ΡΠΈΡ Big O Π΄Π»Ρ Timsort β ΡΡΠΎ O(n log n). Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΎ Π½ΠΎΡΠ°ΡΠΈΠΈ Big O, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ.
ΠΡΠ΅ΠΌΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Timsort ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ Mergesort, ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΎΠΊ. Timsort ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΠΈ Mergesort. ΠΡ ΡΡΠΎ ΡΠΊΠΎΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅.
Peters ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Timsort Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΆΠ΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ . ΠΠ½ Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΡΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ «natural runs» (Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π³ΠΈ). ΠΠ½ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎΠ±ΠΈΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΡΠΎΠ±Π΅Π³ΠΈ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π΅Π³ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½.
ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² (array), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅Π½Π΅Π΅ 64 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Timsort Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ.
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΡΠ°Π²ΠΊΠΎΠΉ β ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π° Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΡΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ. ΠΠ΄Π΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ:
ΠΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ
ΠΠΎΡΡΡΠΎΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π²ΡΡΠ°Π²Π»ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
ΠΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ, ΠΊΠ°ΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΡΠ°Π²ΠΊΠΎΠΉ ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ [34, 10, 64, 51, 32, 21].
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ² (sub-array), ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠΎΡ gif, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ:
ΠΠΎΠ»ΡΡΠ΅ ΠΎ ΠΏΡΠΎΠ±Π΅Π³Π°Ρ
ΠΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π±ΠΎΠ»ΡΡΠ΅ 64 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ (pass) ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ ΡΠ°ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠ±ΡΠ²Π°ΡΡ. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΡΠ°ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ±ΡΠ²Π°ΡΡΠ΅ΠΉ, ΡΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ±Π΅Π³ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΠΏΡΠΎΠ±Π΅Π³ Π²ΡΠ΄Π΅Π»Π΅Π½ ΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ):
ΠΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ minrun ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 32 Π΄ΠΎ 64 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄Π»ΠΈΠ½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΡΠ°ΡΡΠ΅ΡΠ΅ Π±ΡΠ»Π° ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Π° ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠΈΡΠ»Π° 2.
ΠΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΠΏΡΠΎΠ±Π΅Π³Π° ΠΌΠ΅Π½ΡΡΠ΅ minrun, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π΅Π³Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ minrun. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΡΠ°Π²ΠΊΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π΅Π³Π°.
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ minrun ΡΠ°Π²Π΅Π½ 63, Π° Π΄Π»ΠΈΠ½Π° ΠΏΡΠΎΠ±Π΅Π³Π° ΡΠ°Π²Π½Π° 33, Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅: 63-33 = 30. ΠΠ°ΡΠ΅ΠΌ Π²Ρ Π±Π΅ΡΠ΅ΡΠ΅ 30 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· run[33], ΠΈ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π΅Π³Π°.
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π΅Π³ΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅.
Π‘Π»ΠΈΡΠ½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Timsort ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠΎΠ±Π΅Π³ΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Timsort ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈ Π±Π°Π»Π°Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΠ»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΡΠ»Π°. ΠΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅, Π½ΠΎ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π±Π°Π»Π°Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ.
ΠΠΎΠ³Π΄Π° Timsort Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ±Π΅Π³ΠΈ, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΡ Π² ΡΡΠ΅ΠΊ. ΠΡΠΎΡΡΠΎΠΉ ΡΡΠ΅ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΡΡΠΎΠΏΠΊΡ ΡΠ°ΡΠ΅Π»ΠΎΠΊ. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ ΡΠ°ΡΠ΅Π»ΠΊΠΈ ΡΠ½ΠΈΠ·Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π±ΡΠ°ΡΡ ΠΈΡ ΡΠ²Π΅ΡΡ Ρ. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈ ΠΎ ΡΡΠ΅ΠΊΠ΅.
Timsort ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅, Π½ΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ±Π΅Π³ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π°Π²Π΅ΡΡ Ρ Π² ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ «ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½Π°Π΄ΠΎΠ»Π³ΠΎ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π΅Π³ΠΎΠ² ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, Π° ΡΡΠ΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ.
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠ°, Timsort ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΡΠ΅ΠΊΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²Π° ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ Tim Peters:
ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π³ΠΈ ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΡΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Timsort Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ½ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠΈΠΉ (Π½Π°Π·ΡΠ²Π°Ρ ΠΎΠ±Π° ΠΏΡΠΎΠ±Π΅Π³Π° A ΠΈ B) ΠΈΠ· Π΄Π²ΡΡ ΠΏΠΎΠ±Π΅Π³ΠΎΠ² Π² ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ.
Galloping*
*ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΠΎΠΊΠ° Timsort ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ A ΠΈ B, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ±Π΅Π³ «Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ» ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΠΏΠΎΠ΄ΡΡΠ΄. ΠΡΠ»ΠΈ Π±Ρ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ A ΡΠΎΡΡΠΎΡΠ» ΠΈΠ· Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠΈΡ ΡΠΈΡΠ΅Π», ΡΠ΅ΠΌ B, ΡΠΎ A ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π±Ρ Π½Π° ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌ ΠΌΠ΅ΡΡΠ΅. Π‘Π»ΠΈΡΠ½ΠΈΠ΅ ΡΡΠΈΡ Π΄Π²ΡΡ ΠΏΡΠΎΠ±Π΅Π³ΠΎΠ² ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ c Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ.
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ. Timsort ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π³Π° A ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π³Π° B, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, A Π±ΡΠ΄Π΅Ρ ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ΅ΠΌ B.
ΠΠ°ΡΠ΅ΠΌ Timsort ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ galloping. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ²Π΅ΡΡΡΡ A[0] ΠΈ B[0] Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, Timsort Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ b[0] Π² a[0]. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Timsort ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ A. ΠΠ°ΡΠ΅ΠΌ Timsort ΠΈΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A[0] Π² B. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Timsort ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ B.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. Timsort ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ B[0] (ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π²Π΅Π½ 5) ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ, ΠΈΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π² A.
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ B[0] Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Π½Π°ΡΠ°Π»Ρ A (ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ), ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΆΠΈΠΌ gallop Π±ΡΡΡΡΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Timsort ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΎ ΠΊ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ Π² ΡΠ΅ΠΆΠΈΠΌ gallop, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ «ΠΏΠΎΠ±Π΅Π΄» ΡΠΎΠ»ΡΠΊΠΎ Π² A ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² B. ΠΡΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌ gallop ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, Timsort ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ.
ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΊΠΎΡΠΎΡΠΊΠΎ, Timsort Π΄Π΅Π»Π°Π΅Ρ Π΄Π²Π΅ Π²Π΅ΡΠΈ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ:
ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ
Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ
Π ΡΠ°Π½ΡΡΠ΅, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΆΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ° Π² ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ.
ΠΡΠ»ΠΈ Π²Π°Ρ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠ΄, ΡΠΌΠ΅Π»ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΠΉΡΠ΅ ΡΡΡ ΡΠ°ΡΡΡ. ΠΠΎΠ΄ ΡΡΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Timsort Π²ΠΎ Π²ΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΊΡΠ°ΡΠ΅, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π·Π΄Π΅ΡΡ. Timsort ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° C, Π° Π½Π΅ Π½Π° Python.
Timsort ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½ ΠΏΡΡΠΌΠΎ Π² Python, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠ»ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Timsort, ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Timsort, ΠΈ ΠΏΠΎΠ½ΡΡΡ Π΅Π³ΠΎ ΡΡΡΡ, Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ!
ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Tim Peters ΠΊ Timsort, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΎ ΠΊΡΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π½Π° Π΄Π΅Π½Ρ ΠΎΡΠΊΡΡΡΡΡ Π΄Π²Π΅ΡΠ΅ΠΉ ΠΎΠ½Π»Π°ΠΉΠ½.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Timsort
ΠΠ»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² CPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Timsort, ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π’ΠΈΠΌ ΠΠ΅ΡΠ΅ΡΡ Π·Π°ΡΡΠ΅Π½ΡΠΈΠ²ΠΎ Π½Π°Π·Π²Π°Π» Π² ΡΠ΅ΡΡΡ ΡΠ΅Π±Ρ. Timsort β ΡΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ, Π·Π°ΡΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ ΠΈ Timsort ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ Timsort Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Π°Ρ:
ΠΠΎ Π΄ΡΡΠ²ΠΎΠ» ΠΊΡΠΎΠ΅ΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΡΡ .
ΠΠ΅Π»ΠΈΠΌ Π½Π° ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ
Π§Π°ΡΡΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π΅Π»ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π°Π²ΡΠΎΡ Π½Π°Π·ΡΠ²Π°Π΅Ρ runβΠ°ΠΌΠΈ. Π’Π°ΠΊ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ runβΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²? ΠΠ΄Π΅ΡΡ Π΄Π²Π° ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠ°ΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡ Π±ΡΠ»ΠΎ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ. Π Π΅ΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΡΡΡΠΏΡΡ Π² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ, Π±ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠ°Π»ΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΌΠ°Π³ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ minrun ΠΌΠ΅ΠΆΠ΄Ρ 32 ΠΈ 64 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΡΠΎΡΠ΅ 64 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎ Π½Π° ΡΠ°ΡΡΠΈ ΠΎΠ½ Π½Π΅ Π΄Π΅Π»ΠΈΡΡΡ.
Π‘ΠΎΡΡΠΈΡΡΠ΅ΠΌ runβΡ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π°, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΡΠ΅Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΠΈ Π½Π΅ Π΄ΠΎΡΡΠ³ΠΈΠ²Π°ΡΡ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π»ΠΈΠ½Π½ΡΠ΅Ρ ΠΈΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ (http://www.geneffects.com/briarskin/theory/binary/index.html). ΠΠΈΠ½Π°ΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° β ΡΡΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π° ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ Π² ΡΠ»ΡΡΠ°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². Π‘Π°ΠΌ ΠΠ΅ΡΠ΅ΡΡ ΠΏΠΈΡΠ΅Ρ, ΡΡΠΎ ΡΡΠΎ Π»ΡΡΡΠ΅Π΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠ°ΡΡ, ΡΡΠΈΡΡΠ²Π°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎΠ½ΡΠ΅Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
Π‘Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ
ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ runβΡ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΠΎΠΏΠ°ΡΠ½ΠΎ Π²ΠΎ Π²ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΡΡΠΊΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ, Π΅ΡΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ Π΄Π²Π° ΡΡΠ°ΡΡΠΊΠ° Π²ΠΈΠ΄Π°
ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ. ΠΡΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ galloping, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π° ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ. ΠΠΎΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠ²ΠΎΠ΄
ΠΠ±ΡΠ΅ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 2ΠΊ ΡΡΡΠΎΠΊ ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ ΠΏΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, ΠΊΠΎΠ΄ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΉ. ΠΠ°ΡΠΎ Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Timsort Π² Π»ΡΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ. Π Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅, timsort ΡΠΏΡΠ°Π²ΠΈΡΡΡ Π·Π° O(n log n), Π° ΡΡΠΎ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΡΠ°ΡΠΈ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Timsort ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ Π² Python-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅, ΡΠ΅ΠΉΡΠ°Ρ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ΅ Π² Java, Swift ΠΈ Android platform.
ΠΠΎΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Timsort:
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ:
ΠΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠΎΡΡΡΡ runβΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ»ΠΈΠ²Π°ΡΡΡΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΎΠ±ΠΎΠΈΡ ΠΏΡΠΎΠ³ΠΎΠ½Π°Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π²Π½ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈ
Π ΡΠ½ΠΎΠ²Π° ΠΏΡΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ: Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π»ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ
ΠΠ΅Π΄Π°Π²Π½ΠΎ Π½Π° Ρ Π°Π±ΡΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΏΠΎΠ΄Π½ΡΠ»ΠΈ ΡΠ΅ΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡΠ» Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ ΠΌΠ΅ΡΠΎΠ΄ Timsort.
ΠΠ½, ΠΈΠΌΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ O(n log n), ΡΡΠΊΠΎΡΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n), Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Ρ. ΠΠΎ ΡΡΠΎ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π·Π°ΡΠ²Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄Π²Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ β ΡΡΠΎ Smoothsort ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π¨Π΅Π»Π»Π°.
ΠΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡ ΠΎΠΆΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π±ΡΡΡΡΠΎ. Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΡΠΎ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
ΠΠ±ΡΡΠ½ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π·Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·. ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈ ΡΠΏΡΠΎΡΠΈΠΌ Ρ Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ ΡΡΠ°Π·Π° Β«Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n log n)Β»
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° O(n log n) ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ n Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ) Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ C Β· n log n, Π³Π΄Π΅ C β Π½Π΅ΠΊΠ°Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°.
Π Π²ΠΎΡ ΡΡΠΎΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ C ΠΈ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π°Π³ΠΎΡΠΈΡΠΌΠ°. Π§Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π½Π΅ΠΌ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠ΅Ρ Π½ΡΠΆΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡ. Π’ΠΎ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ C ΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»ΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΠΈΡΠΈΡΠ΅, ΠΈ Π·Π½Π°ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π±ΡΠ΄Π΅Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ.
ΠΠΎΡΡΠΎΠΌΡ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π²ΡΠΈΠ³ΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΈ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ Π²ΡΠΈΠ³ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ, ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π΅Π½. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Ρ Ρ ΠΎΡΡ, Π½Π΅ Π²Π΄Π°Π²Π°ΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΡΠ΅Π½Π°Π·Π²Π°Π½Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΏΡΠΎΡΡ ΡΡΠ°Π·Ρ ΠΊ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ
Timsort
ΠΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ Π΄ΡΡΠ³ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΡΠ΄ΡΠ΅Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π½Π΅ΠΏΠ»ΠΎΡ Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Smoothsort
ΠΡΠ» ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ Π½Π΅Π±Π΅Π·ΡΠ·Π²Π΅ΡΡΠ½ΡΠΌ Π. Π. ΠΠ΅ΠΉΠΊΡΡΡΠΎΠΉ Π² 1981 Π³ΠΎΠ΄Ρ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΈΠ΄Π΅ΠΈ Heapsort β ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΊΡΡΠΈ (Π½Ρ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ, ΠΊΠΎΠΌΡ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ).
ΠΠ΅ΠΉΠΊΡΡΡΠ° ΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄Π½Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΊΡΡΡ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ Π½Π° ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ· ΠΊΡΡ ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠΎΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ.
Π§ΠΈΡΠ»Π° ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ±ΠΎΠ΅ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π»ΠΎΠΆΠΈΡΡ Π² ΡΡΠΌΠΌΡ ΡΠΈΡΠ΅Π» ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ ΡΡΠΎ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΡΠ΅Π».
ΠΡΠΈΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ· ΠΊΡΡ ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ Π΄Π»Ρ 13 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠΈ ΠΊΡΡΠΈ: 4-Ρ, 2-Ρ ΠΈ 1-Ρ.
ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠ°ΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΌΠΌΠ° ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΡΠ°Π»Π° ΡΠ°Π²Π½Π° Π½ΠΎΠ²ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠΎΡΠ½ΠΈ ΠΊΡΡ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ. Π’Π°ΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ O(log n).
ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡΡ ΠΊΡΡΠΈ (Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ 1 ΠΊΡΡ ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π½Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ)
ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΆΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ O(log n).
ΠΠΎΠΎΠ±ΡΠ΅, Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»Π΅Π½, Π° Π² Π΄ΠΎΠ±Π°Π²ΠΎΠΊ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½. ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ:
Π‘ΡΠ°ΡΡΡ Π½Π° Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ β Π½Π΅ΠΏΠΎΠ½ΡΡΠ½Π°Ρ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ»Π³ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ, ΠΎΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Hartwig Thomas β ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π½ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΈΡΡ + ΠΏΠΎΡΡΠ½ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΎ Π»Π΅Π³ΡΠ΅ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ π
ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΎΡ K. Schwarz β ΡΠΆΠ΅ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΡΡΡΠ΄Π°.
Shellsort (Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π¨Π΅Π»Π»Π°)
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π¨Π΅Π»Π»Π° β ΡΡΠΎ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠ° Π½Π°Π΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ; Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π° i-ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ ΠΌΡ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΡΡΠΈΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π½Π° ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΈ di.
ΠΡΠΈ ΡΡΠΎΠΌ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ di Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ 1 (ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π³ β ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ), ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°: ΠΏΡΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 12 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΎΠ² ΡΠ°Π²Π½ΠΎ 3, d1 = 5, d2 = 3, d3 = 1
ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ°Π³Π΅ Π±ΡΠ΄ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ:
(a1, a4, a7, a10), (a2, a5, a8, a11), (a3, a6, a9, a12)
Π Π½Π° ΡΡΠ΅ΡΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² (a1. a12) ΡΠ΅Π»ΠΈΠΊΠΎΠΌ
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π΄ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄Π°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠ°Π³Π°ΠΌΠΈ Π½Π΅ ΠΏΠΎ 1, Π° ΠΏΠΎ di, Π° ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΡΠΆΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ° Π½Π΅ΠΊΠ°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ (ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΌ ΠΌΠ΅ΡΡΠ°ΠΌ), ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ².
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΡΠ±ΠΎΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ² ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ di, ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ; Π² Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°. ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π²ΡΠ±ΡΠ°Π» Π²Π°ΡΠΈΠ°Π½Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π·Π΄Π΅ΡΡ, Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ O(n 4/3 ), Π° Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ O(n 7/6 ).
ΠΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π°, Π²ΡΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΠΏΡΠΎΠΉΠ΄ΡΡ Β«Π² Ρ ΠΎΠ»ΠΎΡΡΡΡΒ». ΠΠΎΡΠΎΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π²ΠΈΡΠΈΡ Π»ΠΈΡΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ². ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ O(n).
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ O(1) Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ, ΡΡΡ ΠΈ Π²ΠΎΡ ΡΡΡ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΠΎΡ ΠΈ ΡΠ°ΠΌΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ β ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π° ΡΠ°Π·Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ°ΠΌΠ΅ΡΡΠ»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ), Π²ΡΠ΅ΠΌΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π»ΠΎΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π»ΡΡ Π½Π° ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΡΠΈ ΡΠ°Π·Π°, Π±ΡΠ°Π»ΡΡ Π² ΡΠ°ΡΡΠ΅Ρ Π»ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ (ΡΡΠΎΠ±Ρ ΠΊΡΠ°ΡΠΊΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»ΠΈ Π½Π° Π½Π°Ρ ΡΠ΅ΡΡΠ½Π΅ΠΉΡΠΈΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ π )
ΠΠ΅Π»Π΅Π·ΠΎ: Π½ΠΎΡΡΠ±ΡΠΊ HP dv3510er, Intel Core 2 Duo 2ΠΠ³Ρ, 2ΠΠ± RAM.
ΠΠ‘: Ubuntu 11.10
ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΡΠ΅ΡΡΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ°Π·Π½ΡΡ Π΄Π°Π½Π½ΡΡ :
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ 1: Π Π°Π±ΠΎΡΠ° Π½Π° ΠΎΠ±ΡΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΠ°Π΄Π°ΡΠ΅ΠΉ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ , Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ 10 Π½Π°Π±ΠΎΡΠΎΠ² ΠΏΠΎ 10 8 ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π», Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π±ΡΠ»ΠΎ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ.
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ°Π²Π½Π° (ΠΊΡΠΎΠΌΠ΅ ShellSort) O(n log n). Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠΎΠΉ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ C.
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ , Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΡΡΠ»ΠΈ Π²ΠΏΠ΅ΡΠ΅Π΄. ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ 2: ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠ°Π²Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°
ΠΠ°Π½ΠΎ 10 8 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π», ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ. ΠΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ ΠΈΡ
ΠΏΠΎ k ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²ΡΠ΅ Π³ΡΡΠΏΠΏΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π΄Π΅ΡΡΡΠΈ ΡΠΈΡΠ΅Π»: 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
ΠΡΡΠΏΠΏΡ Β«Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΒ» Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Ρ ΡΠ°Π½ΠΈΠΌΡΡ Π² Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π’ΠΎ Π΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π»ΡΠ±ΠΎΠΉ Π³ΡΡΠΏΠΏΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅Ρ Π³ΡΡΠΏΠΏ, ΡΡΠΎΡΡΠΈΡ ΠΏΡΠ°Π²Π΅Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅Ρ , ΡΡΠΎ ΡΡΠΎΡΡ Π»Π΅Π²Π΅Π΅.
ΠΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ k, ΡΠ°Π²Π½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΠΌ 10.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ 3: ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΠ°Π½ΠΎ 10 8 ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΠΈΠ· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠΏΠ°Π·ΠΎΠ½Π° (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ [0β¦ 100000]) ΠΈ ΠΎΠ½ΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΡ 1 Π΄ΠΎ k.
Π’Π°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΡΠΆΠ΅ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ°ΠΊΠΎΠ²ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Π±Π»ΠΈΠ·ΠΎΡΡΠΈ ΠΠ°ΠΉΡΠ°
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Smoothsort ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠΊΠ°Π·Π°Π» ΡΠ΅Π±Ρ Ρ Π½Π΅ ΡΠ°ΠΌΠΎΠΉ Π»ΡΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ Heapsort, Π° Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅. Timsort ΡΠ½ΠΎΠ²Π° Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ 4: ΠΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ: Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ 10 8 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π», ΠΎΡΡΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈΡ ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ k ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ Π΄Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
Π ΡΡΠΎΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π½Π°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Smoothsort’Ρ Β«ΡΠ°ΡΠΊΡΡΡΡΡΡΒ»: ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠΊΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², Π·Π΄Π΅ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Β«Π΄Π²ΠΈΠ³Π°Π΅ΡΒ» ΠΏΠΎ ΠΊΡΡΠ°ΠΌ ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ Π»ΠΈΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎ Π½Π΅ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΊΡΡ. ΠΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠ½ ΡΠ½ΠΎΠ²Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Β«Π΄ΠΎΠ»Π³ΠΈΠΌΒ».
ΠΡΠΎΠ³ΠΈ
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ»ΡΠ·Π° ΠΎΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π΅ΡΡΡ, ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΎΠ½ΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠΏΠ΅Ρ ΠΎΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ. ΠΠ±ΡΠΎΠ»ΡΡΠ½ΡΠΌ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ ΡΡΠ°Π» Timsort β Π΄Π°ΡΡΠΈΠΉ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ Quicksort Π² ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ»ΡΡΠ°Ρ . ΠΠ΅ Π·ΡΡ ΠΎΠ½ ΠΏΡΠΈΠ·Π½Π°Π½ ΠΈ Π²ΡΡΡΠΎΠ΅Π½ Π² Python, OpenJDK ΠΈ Android JDK.
ΠΡΠΎ Smoothsort Π² ΡΠ΅ΡΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ) ΠΈ Π½Π΅ ΡΠΏΡΠΎΡΡΠ°: ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ΄Π΅ΠΈ ΠΈ ΡΠΏΠΎΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½ ΡΠΊΠΎΡΠ΅Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΡΡΠΊΠΎΠΌ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. Π― Π½Π°ΡΠ΅Π» Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° β Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ sofia-sip, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ IM- ΠΈ VoIP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Shellsort Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΏΠΎΡΠ½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π°ΡΠΈΠΌΠΏΡΠΎΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π΄Π²ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². ΠΠΎ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π΄Π²Π° Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°: ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠ΄Π΅ΠΈ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ Smoothsort ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ β ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΠΎΠΊ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Timsort ΠΈ Smoothsort ΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΈ ΡΡΡΠΎΠΊ.
Π₯ΠΎΡΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ Π·Π°ΠΎΡΡΡΡΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ (Π²ΡΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ).
ΠΠΎΠΉ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ β Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ Π² Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Timsort. Π ΡΠ»ΡΡΠ°Π΅ ΠΆΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π·Π°Π΄Π°Ρ, Π³Π΄Π΅ Π½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½ΡΠΆΠ΅Π½ Π±ΡΡΡΡΠΎ β ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈ Quicksort’ΠΎΠΌ β ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π΄Π°Π΅Ρ Π»ΡΡΡΡΡ ΠΈΠ· ΠΏΡΠΎΡΡΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ. ΠΠ°Π΄Π΅ΡΡΡ, Π²Π°ΠΌ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ.