ΠΡΠΎΠ΅ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ Π½Π° Python Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΡ ΠΏΠΎ ΡΡΠΌΠΌΠ΅ ΠΈΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ β ΡΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ "ΡΠ°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉ". ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π΄Π΅Π»ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΈΡ Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΠ°ΡΡΠΈΠ² Π΄Π΅Π»ΠΈΡΡΡ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ
- Π Π΅ΠΊΡΡΡΠΈΡ: ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ
- Π‘Π»ΠΈΡΠ½ΠΈΠ΅: ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΡ ΠΏΠΎ ΡΡΠΌΠΌΠ΅ ΠΈΡ Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ:
- ΠΠ»Π°ΡΡ
MatrixΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠΌΠΌΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² - Π€ΡΠ½ΠΊΡΠΈΡ
merge_sortΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ - Π€ΡΠ½ΠΊΡΠΈΡ
merge_two_listsΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΄Π²Π° ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΌΠ°ΡΡΠΈΡ
- ΠΡΡΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ: O(n log n)
- Π‘ΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ: O(n log n)
- Π₯ΡΠ΄ΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ: O(n log n)
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n log n), ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ.
O(n) β ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ
- ΠΠ°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n log n)
- Π‘ΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ (ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²)
- Π₯ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ
- ΠΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
- Π’ΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ O(n)
- ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ "Π½Π° ΠΌΠ΅ΡΡΠ΅" (in-place)
- ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ Π±ΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄:
- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΡΠΈΡ
k - ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ:
- Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ
- ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ (ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ)
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΡ, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎ ΡΡΠΌΠΌΠ΅ ΠΈΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
3
3
1 2 3
4 5 6
7 8 9
2
10 20
30 40
2
1 1
1 1
0
1
2
0 1 2
- Python 3.x
Matrixβ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΌΠΌΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈmerge_sort(arr)β ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌmerge_two_lists(a, b)β ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²main()β ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π½ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡ. ΠΠΎΠ±ΠΊΠΎΠ²ΡΠΌ ΠΠ»Π°Π΄ΠΈΡΠ»Π°Π²ΠΎΠΌ ΠΠΌΠΈΡΡΠΈΠ΅Π²ΠΈΡΠ΅ΠΌ