ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π°
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π°
β | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | Π Π΅ΠΉΡΠΈΠ½Π³ |
---|---|---|
1 | t ourist | 3804 |
2 | B enq | 3618 |
3 | M iracle03 | 3460 |
4 | e cnerwala | 3419 |
5 | d jq_cpp | 3394 |
6 | p eehs_moorhsum | 3384 |
7 | R adewoosh | 3366 |
8 | k sun48 | 3363 |
9 | m aroonrk | 3362 |
10 | j iangly | 3354 |
β | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | ΠΠΊΠ»Π°Π΄ |
---|---|---|
1 | YouKn0wWho | 214 |
2 | 1-gon | 206 |
3 | U m_nik | 196 |
4 | Errichto | 182 |
5 | awoo | 179 |
6 | sus | 178 |
7 | t ourist | 176 |
8 | antontrygubO_o | 172 |
9 | -is-this-fft- | 170 |
10 | R adewoosh | 169 |
ΠΠ»ΠΎΠ³ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ slalex
ΠΠΎΠΏΠ°Π»Π°ΡΡ Π½Π΅Π΄Π°Π²Π½ΠΎ Π·Π°Π΄Π°ΡΠΊΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ((
ΠΠΎΠ³Π΄Π° ΡΠΆΠ΅ ΠΌΡΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ»ΠΈΡΡ, ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠ³ΡΠ³Π»ΠΈΡΡ, Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ». Ρ
ΠΎΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°ΡΡΡΡ
ΠΏΠΈΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ))
ΠΠ°Π΄Π°ΡΠ° ΡΠ°ΠΊΠΎΠ²Π°, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° (Π½Π΅ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅).
Π’.Π΅. ΡΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° A[1. n] Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ:
ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ A[n / 2 + 1], ΠΏΡΠΈ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΌ n ΠΈ (A[n / 2] + A[n / 2 + 1]) / 2.0, ΠΏΡΠΈ ΡΠ΅ΡΠ½ΠΎΠΌ n.
ΠΠ. ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ. 8)
ΠΠΎΠ»ΠΎΡΠ°Ρ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π°. ΠΠΎΠΈΡΠΊ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠΎΠΊΠ° Π²Ρ ΠΎΠ΄Π½ΡΡ ΡΠΈΡΠ΅Π»
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π·Π°Π΄Π°ΡΡ: ΠΏΠΎΠΈΡΠΊ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΡΡΠ΅Π΄ΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ Π·Π°Π΄Π°ΡΡ, ΡΠ°Π·Π±Π΅ΡΡΠΌ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²Π²ΠΎΠ΄Π½ΡΠ΅, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠΌ ΠΈ ΠΎΡΠ΅Π½ΠΈΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ° Π²Ρ
ΠΎΠ΄ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠ΄Π°ΡΡΡΡ ΠΏΠΎΡΠΎΠΊ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π», Ρ.Π΅. ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π½ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² Π·Π°Π΄Π°Π½ Π½Π°ΠΏΠ΅ΡΡΠ΄ ΠΈ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ°Ρ. Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Ρ.Π΅. ΡΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π±ΡΠ»Π°
ΠΠ΅Π΄ΠΈΠ°Π½Π° ΡΡΠ΄Π° ΡΠΈΡΠ΅Π»
ΠΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ , Π΅ΡΠ»ΠΈ
ΡΡΡΠ½ΠΎΠ΅ ΠΈ
Π΅ΡΠ»ΠΈ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅.
ΠΠ°ΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π±Π΅ΠΉΠ·Π»Π°ΠΉΠ½ΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π° .
ΠΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π²ΡΡΠ°Π²Π»ΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π²Π°Π»ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΌ. ΠΠ°ΡΠ΅ΠΌ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ΅Π΄ΠΈΠ°Π½.
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΡΡΠ΅, ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΡΠΎΠΊΠ°, ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΠΏΠΎΠΈΡΠΊΡ ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ².
Π£Π»ΡΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ β ΠΊΡΡΠ°.
ΠΡΡΠ°. Min-heap, max-heap
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ min-heap. Min-heap β ΡΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅Π΅ Π΄Π²ΡΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ:
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π·Π°Π΄Π°ΡΡΡΡ max-heap, Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Β«ΠΌΠ΅Π½ΡΡΠ΅Β» Π½Π° Β«Π±ΠΎΠ»ΡΡΠ΅Β» Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π΅.
ΠΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΡΡΠΈ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: Π²Π·ΡΡΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° (ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°) ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅
Π Π°Π±ΠΎΡΠ°Ρ Ρ ΠΊΡΡΠ΅ΠΉ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π·ΡΡΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π²ΡΠ΅Π³Π΄Π° Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ Π΄Π΅ΡΠ΅Π²Π°, ΡΠΎ ΡΠ·Π½Π°ΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΠ΄Π°. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π½Π° Π΅Π³ΠΎ ΠΌΠ΅ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ extract, ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΆΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΈ ΡΠ°Π²Π½Π° .
ΠΠ΅ΡΠΎΠ΄ extract Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ: ΡΠ½Π°ΡΠ°Π»Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΡΠ°Π²ΠΈΡΡΡ Π² ΠΊΠΎΡΠ΅Π½Ρ Π΄Π΅ΡΠ΅Π²Π°, Π·Π°ΡΠ΅ΠΌ Π½Π° ΠΊΠΎΡΠ½Π΅ Π΄Π΅ΡΠ΅Π²Π° ΡΡΠ°ΡΡΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ bubble_down, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π·Π° ΡΡΠΎΠ²Π½Π΅ΠΌ (Π° ΡΠ°ΠΊΠΈΡ
Π²ΡΠ΅Π³ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ Π΄Π΅ΡΠ΅Π²Π΅) ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π».
ΠΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Python ΡΠΌΠΎΡΡΠΈ Π½ΠΈΠΆΠ΅.
ΠΡΠΎΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π½Π΅ ΡΡΡΠ°ΡΠΈΠ² 2 ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΡΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ bubble_up ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠΎΡΠ½Ρ, ΠΏΠΎΠΊΠ° Π½Π°Π΄ Π½ΠΈΠΌ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ΅Π½ΡΡΠΈΠΉ Π½Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΊΠΎΡΠ½Π΅ΠΌ. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π²Π½Π°
ΠΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ min ΠΈ max-heap:
ΠΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΡΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΠΊΡΡΠΈ, ΠΎΠ΄Π½Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ, Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ. ΠΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° Π²Π΅ΡΡ Π½ΡΡ ΡΠ°ΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π½ΠΈΠΆΠ½ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΌΠ΅Π½ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ min-heap, ΡΡΠΎΠ±Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅ΠΆΠΈΡ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π΅, Π° Π²ΡΠΎΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ max-heap.
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±ΡΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΅Π³ΠΎ Π² Π²Π΅ΡΡ Π½ΡΡ ΡΠ°ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΈΠ· ΡΡΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΈ Π² Π½ΠΈΠΆΠ½ΡΡ ΡΠ°ΡΡΡ, Π΅ΡΠ»ΠΈ Π²Π΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅. ΠΠ°ΡΠ΅ΠΌ, ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠ² Π²ΡΡΠ°Π²ΠΊΡ, Π±ΡΠ΄Π΅ΠΌ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΈΠ· Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΆΠ΄ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ² ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΠΊΡΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΡΡΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΈΡΠΎΠ³ΠΎΠ²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ
.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΊΡΡΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π΄Π°Π½Π½ΡΡ . Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ ΠΏΠΎΠΈΡΠΊΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΡΠΈΡΠ΅Π».
Π ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Β» ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π²ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡΠΈΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π΄Π²ΡΡ Π΄Π½Π΅Π²Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ² ΠΏΠΎ ΡΠ΅ΠΌΠ΅: ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΆΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ β ΠΊΠΎΠ΄ Π₯Π°ΡΡΠΌΠ°Π½Π°.
ΠΠΎΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ: Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ Π·Π° O(n log n)
Π£ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ΄, Π½ΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎ Π½Π΅ ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ.
ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ Π·Π° ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ O(n)
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ Π½Π°ΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π²Π΅Π·ΡΠΈ. ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Β«quickselectΒ», ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π’ΠΎΠ½ΠΈ Π₯ΠΎΠ°ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΎΠ±ΡΡΠ» Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ β quicksort. ΠΡΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ).
Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ quickselect ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ, ΠΌΡ Π²ΡΠ΄Π΅Π»ΠΈΠΌ quickselect Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ quickselect_median Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ quickselect Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ.
ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ O(n)
Π ΡΡΠ΅Π΄Π½Π΅ΠΌ pivot ΡΠ°Π·Π±ΠΈΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π½Π° Π΄Π²Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π²Π½ΡΡ ΡΠ°ΡΡΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Ρ 1 β2 Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π³Π°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΎΡ ΡΡΠ΄ ΡΡ ΠΎΠ΄ΠΈΡΡΡ ΠΊ 2n. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ Π·Π΄Π΅ΡΡ, Ρ ΡΠΎΡΠ»ΡΡΡ Π½Π° Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ Π² ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΡΡ ΡΡΠΎΠΌΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΡΡΠ΄Ρ.
Quickselect Π΄Π°ΡΡ Π½Π°ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅. Π§ΡΠΎ, Π΅ΡΠ»ΠΈ Π½Π°Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π΄Π½Π΅Π΅, ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ?
ΠΠ΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ O(n)
Π‘ ΡΡΡΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄Π±ΠΎΡΠ° ΠΎΠΏΠΎΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΡΠ΅ΠΉ ΡΠ΅Π»ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΠΎΡ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ pivot, ΠΊΠΎΡΠΎΡΡΠΉ Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΄Π°Π»ΡΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ O(n) ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ quickselect. ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π² 1973 Π³ΠΎΠ΄Ρ ΠΠ»ΡΠΌΠΎΠΌ (Blum), Π€Π»ΠΎΠΉΠ΄ΠΎΠΌ (Floyd), ΠΡΠ°ΡΡΠΎΠΌ (Pratt), Π ΠΈΠ²Π΅ΡΡΠΎΠΌ (Rivest) ΠΈ Π’Π°ΡΡΡΠ½ΠΎΠΌ (Tarjan). ΠΡΠ»ΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ Π²Π°ΠΌ Π½Π΅ Ρ Π²Π°ΡΠΈΡ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΠΈΡ ΡΡΠ°ΡΡΡ 1973 Π³ΠΎΠ΄Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ, Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΡ ΠΌΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Python:
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΠΌΠ΅Π΄ΠΈΠ°Π½Π° ΠΌΠ΅Π΄ΠΈΠ°Π½ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ pivot. ΠΠ°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ±ΠΎΡΠ° ΠΎΠΏΠΎΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈ Π½Π°ΠΌ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ 30% ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅? ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠ΄Π²ΠΎΠ΄ΠΈΠΌ ΠΈΡΠΎΠ³
Π£ Π½Π°Ρ Π΅ΡΡΡ quickselect, Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ Π½Π°Π»ΠΈΡΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. Π£ Π½Π°Ρ Π΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΠΌΠ΅Π΄ΠΈΠ°Π½, Π°Π»Π³ΠΎΡΠΈΡΠΌ O(n) Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡ Π΄Π»Ρ quickselect). Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ² ΠΈΡ , ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ (ΠΈΠ»ΠΈ n-Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠΏΠΈΡΠΊΠ°) Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ!
ΠΠ΅Π΄ΠΈΠ°Π½Ρ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ. ΠΡΠΎ Π½Π΅ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π° ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ quickselect. ΠΠ΄Π΅ΡΡ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΠΌΠ΅Π΄ΠΈΠ°Π½.
ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ! ΠΠ΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠΏΠΎΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈ quickselect ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ. ΠΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π²Π΅Π·ΡΡ ΠΈ ΠΌΡ ΡΠ³Π°Π΄ΡΠ²Π°Π΅ΠΌ pivot Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ, ΡΡΠΎ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΠΏΠ°Π΄ΠΈΠ½Ρ Π½Π° Π·Π΅Π»ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!
Π ΡΡΡΠΊΠΈΠ΅ ΠΠ»ΠΎΠ³ΠΈ
ΠΠ΅Π΄ΠΈΠ°Π½Π° Π΄Π²ΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Ρ: https://blog.csdn.net/hk2291976/article/details/51107778
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Β«ΡΠ°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉΒ»! ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡΠΈ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄Π°Π½Π½ΡΡ Π΄Π²ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΈΠ»ΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Top K Π² Π΄Π²ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ (ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Top K ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π° Π² ΠΏΠΎΠΈΡΠΊ ΠΡΠΎΠ±Π»Π΅ΠΌΠ° k-Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°).
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΠ΄Π°Π»Π΅Π½ ΡΠ»Π΅Π²Π° ΠΎΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ x x Π§ΠΈΡΠ»ΠΎ, ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π° x x ΠΠ΅Π΄ΠΈΠ°Π½Π° ΠΎΡΡΠ°Π²ΡΠ΅Π³ΠΎΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΡΡΠ°Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Π΄ΠΈΠ°Π½ΠΎΠΉ.
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ», Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½:
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π½Π°Π½ΠΈΡ
Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΡΠ½ΠΈΡΠ΅ «ΡΠ°Π·ΡΠ΅Π·»
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΠΊΠΊΡΡΠ°ΡΠ½ΡΠΉ ΠΠ°ΡΡΠΈΠ² ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π»Π΅Π²ΡΡ ΠΈ ΠΏΡΠ°Π²ΡΡ ΡΠ°ΡΡΠΈ.Π Π°Π·ΡΠ΅Π· Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Cut.Π‘Π»Π΅Π²Π° ΠΈ ΡΠΏΡΠ°Π²Π° ΠΎΡ ΡΠ°Π·ΡΠ΅Π·Π° Π±ΡΠ΄ΡΡ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°: ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π²Π° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π°.
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ L = Max (LeftPart), R = Min (RightPart)
Ps. Π Π°Π·ΡΠ΅Π· ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ΅Π·Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠ»ΠΎ.ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅Π·Π°ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠ»ΠΎ, ΡΠΎ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡΠ°Π²ΠΎΠΉ. (Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΡΠ΅Π΄Π½Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°)
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ [2 3 5 7] ΡΠ°Π·ΡΠ΅Π· Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ 3 ΠΈ 5.
[2 3 / 5 7]
ΠΠ΅Π΄ΠΈΠ°Π½Π° ΡΠ°Π²Π½Π° (3 + 5) / 2 = 4
ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ [2 3 4 5 6] ΡΠ°Π·ΡΠ΅Π·Π°Π½Π° Π½Π° 4, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ 4 Π½Π° 2
[2 3 (4/4) 5 7]
ΠΠ΅Π΄ΠΈΠ°Π½Π° ΡΠ°Π²Π½Π° (4 + 4) / 2 = 4
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1 ΡΠΈΡΠ»ΠΎΠΌ ΠΈΠ»ΠΈ 2 ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ.
ΠΡΡΠ΅Π·Π°ΡΡ ΠΈ k-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
ΠΠ΄ΡΠ°Π²ΡΠΉ ΡΠΌΡΡΠ» 1: ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅Π·Π°ΡΡ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ k, ΡΠΎ A [k] Π±ΡΠ΄Π΅Ρ L. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΡΠ»Π΅Π²Π° Π΅ΡΡΡ k ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², A [k] ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ. (ΠΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ Π²Π΅ΡΠΈ, Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΡΡ!)
ΠΠ²ΠΎΠΉΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²
ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ:
C i Ci Π‘ΡΠ΅Π· i-Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. Π§ΡΠΎΠ±Ρ
L i Li ΠΠ΅Π²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·ΡΠ΅Π·Π° i-Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
R i Ri ΠΡΠ°Π²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·ΡΠ΅Π·Π° i-Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ°ΠΊ ΠΈΠ·Π²Π»Π΅ΡΡ k-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° double
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ k = 3
ΠΠ°
[ 1 4 7 9 ] [1 4 7 9]
[ 2 3 5 ] [2 3 5]
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ C1 = 2, ΡΠΎΠ³Π΄Π° C2 = k-C1 = 1
[ 1 4 / 7 9 ] [1 4/7 9]
[ 2 / 3 5 ] [2/3 5]
ΠΡΠ»ΠΈ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ k Π½Π° 4 ΠΈ Π΅ΡΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ΅Π΄Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΡΠΎΠ±ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π½ΠΈΠΆΠ΅.
Π§Π΅ΡΠ½ΠΎΡΡΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ
ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π΄Π»ΠΈΠ½Ρ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄ΠΎ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°?
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΠΎΠ±Π°Π²ΡΡΠ΅ «#» (ΡΡΠΎΡ ΡΡΡΠΊΠ°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ°Π½Π°Ρ
Π΅ΡΠ°ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π²), ΡΠ°ΠΊ ΡΡΠΎ Π΄Π»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ (2n + 1 Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ). Π§ΡΠΎΠ±Ρ
Ps. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π³Π° Π½Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ
Π΄ΠΎ | len | ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ | len |
---|---|---|---|
[ 1 4 7 9 ] | 4 | [ # 1 # 4 # 7 # 9 # ] | 9 |
[ 2 3 5 ] | 3 | [ # 2 # 3 # 5 # ] | 7 |
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ
Π ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ³ΠΎ, Π·Π°ΡΠ΅ΠΌ Π²Ρ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ / 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
/ | ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ | ΠΠΎΡΠ»Π΅ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° 2 |
---|---|---|---|
0 | 0 | 1 | 1 |
5 | 2 | 5 | 2 |
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Β«ΡΠ°Π·ΡΠ΅Π·Β» Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅Π³ΠΎ Π»Π΅Π³ΡΠ΅ ΡΠ°Π·ΡΠ΅Π·Π°ΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅Π·Π°Π½ΠΈΠ΅ ΠΏΠΎ Β«#Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ΅Π·Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠ°Π·ΡΠ΅Π·Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΈΡΠ»Π°ΠΌ ΡΠ°Π²Π½ΠΎΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» Π½Π° 2 ΡΠ°ΡΡΠΈ.
Π£Π΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅:
ΠΏΡΠΈΠΌΠ΅Ρ:
1. Π Π°Π·ΡΠ΅Π·Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ 4/7 β#β, C = 4, L = (4-1) / 2 = 1, R = 4/2 = 2
ΠΡΠΎ ΠΈΡΡ
ΠΎΠ΄Π½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ 4 ΠΈ 7! Π§ΡΠΎΠ±Ρ
2. ΠΡΡΠ΅Π·Π°ΡΡ Π½Π° 3, C = 3, L = (3-1) / 2 = 1, R = 3/2 = 1, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ 3!
Π‘ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ. ΠΡΠΌΠ°ΠΉΡΠ΅ ΠΎ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΠ²Π°Ρ
ΠΊΠ°ΠΊ ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ A, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 2m + 2n + 2 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠ°Π·ΡΠ΅Π·Π°Π½Π½ΡΡ
Π½Π° m + n + 1, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΉΡΠΈ m + n + 1 ΠΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ position ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ position m + n + 2. Π§ΡΠΎΠ±Ρ
Π‘Π»Π΅Π²Π°: A [m + n + 1] = ΠΠ°ΠΊΡ (L1 + L2)
Π‘ΠΏΡΠ°Π²Π°: A [m + n + 2] = Min (R1 + R2)
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡ Π΅ΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π·ΡΠ΅Π·ΠΎΠ² Π² Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ , ΡΠΎ ΡΡΠΎ ΡΡ Π΅ΠΌΠ° Π²ΡΡΠ΅.
Π Π°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉ
Π‘ ΡΡΠ΅ΡΠΎΠΌ Π²ΡΡΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ΄Π΅Ρ Β«ΡΠ°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉΒ».
ΠΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ?
ΠΠ°ΠΊ Π²ΡΠ»Π΅ΡΠΈΡΡ?
Π’ΡΠ°Π½ΡΠ³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ C1 ΠΈΠ»ΠΈ C2 Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈΡΡ? Π§ΡΠΎΠ±Ρ
Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ: ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½Ρ 4 ΡΠΈΡΡΠ°ΡΠΈΠΈ:
— C1 = 0 ββ ΠΠ±ΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² 1 Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ, L1> R2, Π° ΠΌΠ΅Π΄ΠΈΠ°Π½Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² 2.
— C2 = 0 ββ ΠΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² 1 ΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ L1
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π°
β | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | Π Π΅ΠΉΡΠΈΠ½Π³ |
---|---|---|
1 | t ourist | 3804 |
2 | B enq | 3618 |
3 | M iracle03 | 3460 |
4 | e cnerwala | 3419 |
5 | d jq_cpp | 3394 |
6 | p eehs_moorhsum | 3384 |
7 | R adewoosh | 3366 |
8 | k sun48 | 3363 |
9 | m aroonrk | 3362 |
10 | j iangly | 3354 |
β | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | ΠΠΊΠ»Π°Π΄ |
---|---|---|
1 | YouKn0wWho | 214 |
2 | 1-gon | 206 |
3 | U m_nik | 196 |
4 | Errichto | 182 |
5 | awoo | 179 |
6 | sus | 178 |
7 | t ourist | 176 |
8 | antontrygubO_o | 172 |
9 | -is-this-fft- | 170 |
10 | R adewoosh | 169 |
ΠΠ»ΠΎΠ³ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ slalex
ΠΠΎΠΏΠ°Π»Π°ΡΡ Π½Π΅Π΄Π°Π²Π½ΠΎ Π·Π°Π΄Π°ΡΠΊΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ((
ΠΠΎΠ³Π΄Π° ΡΠΆΠ΅ ΠΌΡΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ»ΠΈΡΡ, ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠ³ΡΠ³Π»ΠΈΡΡ, Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ». Ρ
ΠΎΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°ΡΡΡΡ
ΠΏΠΈΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ))
ΠΠ°Π΄Π°ΡΠ° ΡΠ°ΠΊΠΎΠ²Π°, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° (Π½Π΅ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅).
Π’.Π΅. ΡΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° A[1. n] Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ:
ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ A[n / 2 + 1], ΠΏΡΠΈ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΌ n ΠΈ (A[n / 2] + A[n / 2 + 1]) / 2.0, ΠΏΡΠΈ ΡΠ΅ΡΠ½ΠΎΠΌ n.
ΠΠ. ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ. 8)