какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

АлгоритмичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Алгоритмы поиска. Алгоритмы сортировки.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ часто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π’ связи с Ρ‡Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² β€œΠ»ΡƒΡ‡ΡˆΠ΅β€?

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, β€œΠ»ΡƒΡ‡ΡˆΠ΅β€, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ, потрСбляя мСньшСС количСство Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов (памяти ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ). Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, нСстрогоС рассуТдСниС. Для Π±ΠΎΠ»Π΅Π΅ строгого рассуТдСния Π²Π²Π΅Π΄Π΅ΠΌ нСсколько понятий.

Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ шагов, пройдСнная ΠΏΡ€ΠΈ исполнСнии Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ самим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ процСссом, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹ΠΌ этим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ описаниСм Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ.

Ясно, Ρ‡Ρ‚ΠΎ врСмя выполнСния зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ исполнитСля. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, элСктронный ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, вСроятно, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π·Π½ΠΎΠ΅ врСмя.

Однако ΠΌΠΎΠΆΠ½ΠΎ врСмя \(T\) Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· количСство элСмСнтарных дСйствий \(k\) ΠΈ срСднСС врСмя выполнСния элСмСнтарного дСйствия \(t\) :

ΠŸΡ€ΠΈ этом, \(k\) являСтся свойством самого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π° \(t\) – свойством исполнитСля.

Π’Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ \(t\) ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ константой для Π΄Π°Π½Π½ΠΎΠ³ΠΎ исполнитСля, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² оцСниваСтся с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ константного мноТитСля. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° оцСниваСтся порядком роста.

ΠšΡ€ΠΎΠΌΠ΅ врСммСно́й слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π²Π°ΠΆΠ½ΠΎΠΉ оказываСтся Ρ‚Π°ΠΊ ΠΆΠ΅ пространствСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

\(S\) Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Ρ‚ΠΎΠΆΠ΅ зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ устройства. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ссли Π΄Π²Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… устройства ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ†Π΅Π»Ρ‹Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ 4 ΠΈ 8 Π±Π°ΠΉΡ‚ соотвСтствСнно, Ρ‚ΠΎ пространствСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° 8-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΄Π²ΠΎΠ΅ большС, Ρ‡Π΅ΠΌ Π½Π° 4-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ пространствСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ оцСниваСтся Ρ‚Π°ΠΊ ΠΆΠ΅ порядком роста.

ΠšΠ»Π°ΡΡΡ‹ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ классы слоТности: это ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΡ…ΠΎΠΆΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС классы слоТности:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ тСорСтичСскиС классы слоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ понятиСм Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠ΅Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° (НМВ). Π˜Ρ… опрСдСлСния ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ, с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° Π½Π° НМВ, Π° названия ΠΈΠΌΠ΅ΡŽΡ‚ прСфикс N (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ NP), ΠΊΡ€ΠΎΠΌΠ΅ NTIME ΠΈ NSPACE, Π³Π΄Π΅ D замСняСтся Π½Π° N.

НМВ – это чисто тСорСтичСскоС построСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ дСйствия Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ МВ, с Ρ‚Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· состояний ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… дСйствий. ΠŸΡ€ΠΈ этом, НМВ всСгда Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… дСйствий Ρ‚ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π° минимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ число шагов. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ, НМВ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ вычислСния всСх Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚Ρƒ Π²Π΅Ρ‚Π²ΡŒ, которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π° минимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ число шагов.

Иногда ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ НМВ. Π₯отя это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π΅Ρ€Π½Ρ‹ΠΌ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС НМВ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠΉ систСмой, Ρ‡Π΅ΠΌ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ \(P \subseteq NP \subseteq PSPACE \subseteq EXPTIME \subseteq NEXPTIME \subseteq EXPSPACE\)

Вопрос равСнства P ΠΈ NP являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Π½Π΅Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… вопросов соврСмСнной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² простых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ рассмотрим ΠΈΡ… ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ†Π΅Π»ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±Ρ‹Π» описан Π² Π”Ρ€Π΅Π²Π½Π΅ΠΉ Индии Π΅Ρ‰Π΅ Π΄ΠΎ нашСй эры ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠΉ стСпСни \(n\) вСщСствСнного числа \(x\)

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ эффСктивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Однако ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с β€œΠ½Π°ΠΈΠ²Π½ΠΎΠΉβ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ \(\mathcal(n)\) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ умноТСния, этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивСн.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ…

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ умноТСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ½ΠΎΠ³Π΄Π° русским ΠΈΠ»ΠΈ ΠΊΡ€Π΅ΡΡ‚ΡŒΡΠ½ΡΠΊΠΈΠΌ, хотя ΠΎΠ½ Π±Ρ‹Π» извСстСн Π΅Ρ‰Π΅ Π² Π”Ρ€Π΅Π²Π½Π΅ΠΌ Π•Π³ΠΈΠΏΡ‚Π΅.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ умноТаСтся Π½Π° Π΄Π²Π°, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ – дСлится Π½Π°Ρ†Π΅Π»ΠΎ Π½Π° 2. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π΄Π²Π° столбика, ΠΏΠΎΠΊΠ° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ получится 1.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ умноТСния являСтся сумма чисСл ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбика, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоят Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ столбикС.

Для эффСктивной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти практичСски Π½Π΅ трСбуСтся, ΠΈ ΠΎΠ½Π° Π½Π΅ зависит ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, поэтому \(S(n) = \mathcal(1)\)

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, слСдуСт Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ эффСктивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Однако ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с β€œΠ½Π°ΠΈΠ²Π½ΠΎΠΉβ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ \(\mathcal(n)\) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слоТСния, этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивСн.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ 23 Π½Π° 43.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ 23 Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ мноТитСля.

4323Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅
8611Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅
1725Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅
3442
6881Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ \(43+86+172+688 = 989\)

Алгоритмы поиска

Поиск ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ссли массив упорядочСн ΠΈ Ссли Π½Π΅Ρ‚. Π­Ρ‚ΠΎ связано ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ± упорядочСнном массивС a priori большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС вСсь массив, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ \(\mathcal O(n)\) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния.

Поиск минимального элСмСнта

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ массив \(a\) Ρ€Π°Π·ΠΌΠ΅Ρ€Π° \(n\) (индСксация с 1), трСбуСтся Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт.

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° \(\mathcal O(n)\)

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск Π² упорядочСнном массивС

Π’ случаС Ссли массив упорядочСн (скаТСм, ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ), Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск нСэффСктивСн: Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, сравнив β€œΡΡ€Π΅Π΄Π½ΠΈΠΉβ€ элСмСнт массива ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу ΠΎΡ‚ΡΠ΅Ρ‡ΡŒ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ упорядочСнный ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ массив \(a\) Ρ€Π°Π·ΠΌΠ΅Ρ€Π° \(n\) (индСксация с 1), Π½Π°ΠΉΡ‚ΠΈ индСкс элСмСнта Ρ€Π°Π²Π½ΠΎΠ³ΠΎ \(P\)

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Алгоритмы сортировки

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ сортировки

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° β€œΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌβ€

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ: Ρ€Π°Π½Π½Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ссли массив Π½Π΅ отсортирован

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС \(n-1\) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния (Ссли массив отсортирован). Π’ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС \(n-1+n-2+n-3+\ldots = n(n-1)/2 = \mathcal O(n^2).\) Максимально \(n(n-1)/2 = \mathcal O(n^2).\) ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ².

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: \(n(n-1)/2 = \mathcal O(n^2)\) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния. НС Π±ΠΎΠ»Π΅Π΅ \(n-1 = \mathcal O(n)\) ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ².

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° вставками

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° вставками сортируСт массив с Π½Π°Ρ‡Π°Π»Π°. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΡ‰Π΅Ρ‚ подходящСС мСсто для вставки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта Π² ΡƒΠΆΠ΅ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слияниСм

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€œΡ€Π°Π·Π΄Π΅Π»ΡΠΉ ΠΈ властвуй”: массив разбиваСтся ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ, каТдая ΠΈΠ· частСй рСкурсивно сортируСтся, Π·Π°Ρ‚Π΅ΠΌ отсортированныС части ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ.

РСкурсия ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ, Ρ‚.ΠΊ. массив 1 элСмСнта Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ отсортирован.

\[t(n) = 2t(n/2)+c\cdot n\] \[t(1) = \mathcal O(1) = c\]

\[t(n) = 2(2t(n/2^2)+c\cdot n/2)+c\cdot n = 2^2 t(n/2^2)+2c\cdot n\] \[t(n) = 2^2 (2t(n/2^3)+c\cdot n/4)+2c\cdot n = 2^3t(n/2^3)+3c\cdot n\] \[\ldots\] \[t(n) = c 2^ <\log_2 n>+ c\cdot n \log_2 n = c n + c\cdot n\log_2 n = \mathcal O(n\log n)\]

МоТно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ (сдСлаСм это ΠΏΠΎΠ·ΠΆΠ΅), Ρ‡Ρ‚ΠΎ сортировка, основанная Π½Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ сравнСнии, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½ΠΈΠΆΠ΅ \(\mathcal O(n\log n).\)

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° подсчётом

Π”Π°, Π½ΠΎ для этого Π½ΡƒΠΆΠ½ΠΎ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Π΅ΠΌ Π΄Π°Ρ‘Ρ‚ сравнСниС.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сортировки, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ сравнСния являСтся сортировка подсчётом.

Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ массив Ρ†Π΅Π»Ρ‹Ρ… чисСл \(\brace,\) ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ \(0 \le x_i

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ Π½Π° основС массива \(\brace\) Π½ΠΎΠ²Ρ‹ΠΉ массив \(\brace,\) Π³Π΄Π΅ \(c_j\) – число элСмСнтов \(\brace,\) Ρ€Π°Π²Π½Ρ‹Ρ… \(j\) : \[c_j = \underset<\brace><\mathrm>(j)\]

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ построСния \(\brace\) составляСт \(\mathcal O(N),\) Π³Π΄Π΅ \(N\) – Ρ€Π°Π·ΠΌΠ΅Ρ€ \(\brace.\)

Π’ΠΎΠ³Π΄Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ всСго Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° – \(\mathcal O(N+\overline x),\) ΠΈΠ»ΠΈ \(\mathcal O(N)\) Ссли \(\overline x\) – константа.

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, понятно, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли \(\overline x\) ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»ΠΎ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, пространствСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° \(\mathcal O(\overline x),\) ΠΈ, скаТСм, ΠΏΡ€ΠΈ \(\overline x = 2^<64>,\) потрСбуСтся ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ 18 эксабайт (18Β·10¹⁸ Π±Π°ΠΉΡ‚, 18 ΠΌΠ»Π½ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚) Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти.

ΠŸΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½Π°Ρ сортировка (radix sort)

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ \(\mathcal O(N+P)\) Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска Π² отсортированном массивС

Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° Автор24

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск Π² отсортированном массивС β€” это стандартный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² отсортированном массивС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСт Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массива ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ.

Алгоритм Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ синонимы: Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск, способ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π½ΠΎΠ³ΠΎ дСлСния, дихотомия.

ΠžΠ±Ρ‰Π°Ρ структура Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Бпособ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска примСняСтся ΠΊΠ°ΠΊ быстрая вСрсия поискового Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΌ сортировку массивС. Он ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ самой малСнькой высотой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ· всСх допустимых ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ достоинствами Π΅Π³ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². И ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π±Ρ€Π°Ρ‚ΡŒ Π½Π΅ числовыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойством рСкурсивности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π‘Π°Π·ΠΎΠ²ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° являСтся Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ массива Π½Π° Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ рСкурсивного поиска Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиска элСмСнта Β«Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Β» Π² массивС:

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Рисунок 1. Поиск элСмСнта Β«Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Β» Π² массивС. Автор24 β€” ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π±ΠΈΡ€ΠΆΠ° студСнчСских Ρ€Π°Π±ΠΎΡ‚

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ этот способ Π±Ρ‹Π» упомянут Π½Π° занятиях Π² школС ΠœΡƒΡ€Π° Π”ΠΆΠΎΠ½Π° Мокли Π² сСрСдинС пятидСсятых Π³ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°. Π‘Π½Π°Ρ‡Π°Π»Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ прСдназначался лишь для массивов Π΄Π»ΠΈΠ½Ρ‹:

Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ пятидСсятых Π³ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ° Π”.Π“.Π›Π΅ΠΌΠ΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ, которая позволяла Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами Π»ΡŽΠ±Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². ПозднСС Π“Π΅Ρ€ΠΌΠ°Π½ Π‘ΠΎΡ‚Ρ‚Π΅Π½Π±Ρ€ΡƒΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° языкС Алгол, Π³Π΄Π΅ сравнСниС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎ число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π»ΠΎ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ способа считаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ поиска, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ вычислСний:

Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ

Π½ΠΎ способСн Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° массивах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ упорядочСны Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ особСнностСй использования этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ поиска ΠΈΠΌΠ΅Π΅Ρ‚ прСимущСства ΠΏΡ€ΠΈ:

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ сортировку со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… массивов ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ формирования ΠΈ развития ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ. Π’ 1971-ΠΎΠΌ Π³ΠΎΠ΄Ρƒ А.К. Π§Π°Π½Π΄Ρ€Π° прСдставил ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска Π”ΠΎΠ½Π°Π»ΡŒΠ΄Ρƒ ΠšΠ½ΡƒΡ‚Ρƒ, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π²ΡˆΠ΅ΠΌΡƒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² своСй Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

Π—Π°Ρ‚Π΅ΠΌ появился ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Ρ€ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Π½Π° Ρ‚Ρ€ΠΈ участка. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния мСстополоТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ экстрСмума.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ поиска, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ участок поиска Π½Π΅ дСлился Π½Π° Π΄Π²Π°, Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ прСдсказаниС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° поиска Π½Π° Π±Π°Π·Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ большим быстродСйствиСм, ΠΏΡ€ΠΈ достаточно Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ распрСдСлСнии элСмСнтов. БрСдняя ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задаётся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

Но ΠΏΡ€ΠΈ самом ΠΏΠ»ΠΎΡ…ΠΎΠΌ раскладС, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π°:

Π’ 1986-ΠΎΠΌ Π³ΠΎΠ΄Ρƒ Π‘Π΅Ρ€Π½Π°Ρ€ Π¨Π°Π·Π΅Π»Π»Π΅ΠΌ ΠΈ ЛСонидас Π”ΠΆ. Губайс ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π·Π²Π°Π»ΠΈ Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ спуск, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ускорил Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах.

Π‘Π»ΠΈΠ·ΠΊΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌΡƒ поиску Π² массивС являСтся способ бисСкции ΠΈΠ»ΠΈ способ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π½ΠΎΠ³ΠΎ дСлСния. Π•Π³ΠΎ основным ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ считаСтся вычислСниС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вмСсто опрСдСлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° массива согласно Π΅Π³ΠΎ индСксации, ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ индСксами ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² массива. По своим свойствам, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² рСкурсивной, Ρ‚Π°ΠΊ ΠΈ Π² ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. Π―Π΄Ρ€ΠΎ для вычислСний Π² ΠΎΠ±Π΅ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ рСкурсии имССтся добавочная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, которая состоит Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ сохранСнии ΠΈΡ… стСка.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ прСдставлСниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Π’ качСствС исходных Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив nn чисСл

Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ упорядочиваниС ΠΏΠΎ Π½Π΅ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎ Π½Π΅ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅ΠΌ число АА, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся ΠΎΡ‚Ρ‹ΡΠΊΠ°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ массивС. Π”Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ, это индСксный Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ равняСтся Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌΡƒ. Или ΠΆΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΡ€ΠΈ отсутствии Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° всСх этапах Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ массива. КаТдая ΠΏΠ°Ρ€Π° содСрТит сумму ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‘ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚. На ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ шагС Π½Π° ΠΏΠ°Ρ€Ρ‹ дСлятся ΡƒΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ суммы, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π΅ вошСдшиС Π² ΡƒΠΆΠ΅ извСстныС суммы, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ выполняСтся ΠΎΠ΄Π½ΠΎ дСйствиС, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ вычисляСтся срСднСС арифмСтичСскоС Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ индСксов:

mk = lk + rk2mk = lk + rk2

Π“Π΄Π΅ символами lk, rk, mklk, rk, mk ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° индСксация Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ окончания, Π° Ρ‚Π°ΠΊΠΆΠ΅ сСрСдины Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° массива ΠΏΡ€ΠΈ ΠΊΠΊ-ΠΎΠΌ шагС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ выполняСтся поиск ΠΏΠΎ всСм элСмСнтам массива, поэтому

l0 = 0, r0 = nβˆ’1l0=0, r0=nβˆ’1

Π―Π΄Ρ€ΠΎΠΌ вычислСний способа Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния ΠΈ опрСдСлСния сСрСдины ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°, выполняСмыС Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎ для постоянно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… массива. ΠžΠ±Ρ‰Π΅Π΅ число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слоТСния, умноТСния ΠΈ сравнСния прямо ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ числу шагов ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π° ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ:

Π‘Π°ΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Ρ‘ΠΌ рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ дСйствия для постоянно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‰ΠΈΡ…ΡΡ массивов. ΠŸΡ€ΠΈ это Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ стандартныС ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ этапы:

Π­Ρ‚Π°ΠΏ 1. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½Ρ†ΠΎΠ² массива:

l0 = 0, r0 = nβˆ’1l0 = 0, r0 = nβˆ’1

Π­Ρ‚Π°ΠΏ 2. Π’ случаС, ΠΊΠΎΠ³Π΄Π° lk\gtrklk\gtrk, Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ поиска ΠΊΠ°ΠΊ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ищСтся позиция сСрСдины ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° массива ΠΊΠ°ΠΊ цСлая Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ суммы ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΉ:

mk = [lk + rk2]mk = [lk + rk2].

Π­Ρ‚Π°ΠΏ 3. Π’ случаС, ΠΊΠΎΠ³Π΄Π° xmk\ltAxmk\ltA, Ρ‚ΠΎΠ³Π΄Π° опрСдСляСм:

lk:=mk+1lk:=mk+1 ΠΈ возвращаСмся ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ этапу.

Π­Ρ‚Π°ΠΏ 4. Π’ случаС, ΠΊΠΎΠ³Π΄Π° xmk = Axmk = A, поиск Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π²Π²ΠΈΠ΄Ρƒ отсутствия искомого значСния ΠΈ возвращаСтся Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ mkmk.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ О(log n)?

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Если Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, Ρ‚ΠΎ навСрняка Π²ΠΈΠ΄Π΅Π»ΠΈ обозначСния Ρ‚ΠΈΠΏΠ° O(log n), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ логарифмичСской Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слоТности. Π”Π°Π²Π°ΠΉΡ‚Π΅ освСТим Π² памяти, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, ΠΈ ΠΊΠ°ΠΊ оцСниваСтся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

Π˜Ρ‚Π°ΠΊ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ памяти. Как Π±Ρ‹ Ρ‚Π°ΠΌ Π½ΠΈ Π±Ρ‹Π»ΠΎ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ массив ΠΈΠ· ста элСмСнтов обработаСтся быстрСС, Ρ‡Π΅ΠΌ ΠΈΠ· тысячи. ΠŸΡ€ΠΈ этом здСсь нас ΠΌΠ°Π»ΠΎ интСрСсуСт Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ врСмя, вСдь ΠΎΠ½ΠΎ зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, процСссора, языка программирования ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π“Π»Π°Π²Π½ΠΎΠ΅ β€” это асимптотичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ стрСмлСнии Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ бСсконСчности.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 4n 3 + 7n условных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ n элСмСнтов Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Если ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ n, Π½Π° ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ сильнСС Π²Π»ΠΈΡΡ‚ΡŒ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ n Π² ΠΊΡƒΠ±, Π° Π½Π΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ n Π½Π° 4 Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 7n. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ врСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π²Π½Π° О(n 3 ) ΠΈ ΠΎΠ½Π° кубичСски зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎ касаСтся Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ О (О-нотация), Ρ‚ΠΎ это ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈΠ· ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Ρ‚. ΠΊ. Π΄Π°Π½Π½ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ асимптотичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ O(f(n)) Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти Π»ΠΈΠ±ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° растёт Π² зависимости ΠΎΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ происходит Π½Π΅ быстрСС, Ρ‡Π΅ΠΌ константа, умноТСнная Π½Π° f(n).

ЛинСйная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” O(n)

Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска наибольшСго элСмСнта Π² нСсортированном массивС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ элСмСнт массива ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ, Π½Π°ΠΌ понадобится ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ всСм n-элСмСнтам этого массива.

ЛогарифмичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” O(log n)

Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск. Когда массив отсортирован, ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ значСния ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ дСлСния ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ. Если ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ срСднСго элСмСнта ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ большС искомого, ΠΌΡ‹ отбросим Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ массива. Если мСньшС, отбросим ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ. И Ρ‚Π°ΠΊ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ log n элСмСнтов.

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” O(n 2 )

Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΠΎ слоТности, Π½ΠΎ основаны ΠΎΠ½ΠΈ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅.

Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π΅ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этом случаС ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обозначаСтся ΠΊΠ°ΠΊ O(1). К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ элСмСнта массива Π½Π΅ Π½Π°Π΄ΠΎ Π½ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ элСмСнты массива, Π½ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ Π½ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ число Ρ€Π°Π·. Π—Π΄Π΅ΡΡŒ Π½Π°Π΄ΠΎ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… 3-ΠΉ элСмСнт, Ρ‡Ρ‚ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ‚ΠΎΠ³ΠΎΠΌ, Π½Π° вычислСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ для любого ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… потрСбуСтся ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя. Π‘Ρ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ проводят ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΏΠΎ памяти.

Наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° врСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ слоТности с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈ скорости 10 6 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду:

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Π’ΠΎΡ‚ ΠΈ всё! Если ΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π²Π°ΠΌ сюда.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Arrays, Collections: АлгоритмичСский ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ списки

НСдавно Π½Π° собСсСдовании Π² ΠΊΡ€ΡƒΠΏΠ½ΡƒΡŽ компанию Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° мСня попросили Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» самописныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки, Π° пользовался всСгда Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ, Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ затруднСния с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ПослС собСсСдования я Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² вопросС ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ список основных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки ΠΈ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² стандартном ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java β€” Java Collections Framework (JCF). Для этого я ΠΈΠ·ΡƒΡ‡ΠΈΠ» исходники Oracle JDK 7.80 (UPD: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ссылка).

Π’ самом ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ изучСния прСдставлСн Π½Π° рисункС. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ β€” Π² основном тСкстС.

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Рисунок 1. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Arrays, Collections ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Π°Π·ΠΈΠ»ΠΎ мСня Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Arrays ΠΈ Collections β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎ ΠΏΠ°Π»ΡŒΡ†Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ β€” ΠΏΠΎ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счСту, это Π΄Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΈ ΠΎΠ΄ΠΈΠ½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сортировка списков Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сортировку массивов.

Π’Ρ€Π΅Ρ‚ΡŒΠ΅ β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ с python.

Алгоритм быстрой сортировки с двумя ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΌΠΈ элСмСнтами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ нашим соотСчСствСнником Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ΠΎΠΌ Ярославским ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ содСйствии Π”ΠΆΠΎΠ½Π° Π‘Π΅Π½Ρ‚Π»ΠΈ ΠΈ Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ…Π°.

Алгоритм сортировки слияниСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся основным для сортировки массивов ссылочных Ρ‚ΠΈΠΏΠΎΠ², Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ своСго создатСля Tim Peters β€” TimSort. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±Ρ‹Π» Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ…ΠΎΠΌ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки списков, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° python Π’ΠΈΠΌΠΎΠΌ ΠŸΠ΅Ρ‚Π΅Ρ€ΡΠΎΠΌ.

ΠšΡ€Π°Ρ‚ΠΊΠΎ излагая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ:

Π˜Ρ‚Π°ΠΊ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ основныС ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ util, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ 4-Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· API Collections ΠΈ API Arrays.

Π’Π°Π±Π»ΠΈΡ†Π° 1. API Arrays vs API Collections

ΠœΠ΅Ρ‚ΠΎΠ΄Arrays APICollections API
Sort methodArrays.sortCollections.sort
Search methodArrays.binarySearchCollections.binarySearch
Arrays.sort
ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²

Основной Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки для массивов ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² Arrays β€” быстрая сортировка. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой сортировки Π²Ρ‹Π΄Π΅Π»Π΅Π½ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ класс DualPivotQuickSort, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ sort для сортировки массивов всСх ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Arrays API Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ Π² Π½ΠΈΡ… ссылку Π½Π° массив. Если трСбуСтся ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ массива, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ индСксы Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° быстрой сортировки Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ΠΈ Π² срСднСм случаС составляСт O(n log n). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΌΠ°Π»Ρ‹Ρ… массивах) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрой сортировки ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ слоТности. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ смысл вмСсто Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚, Π½ΠΎ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… случаях ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ. Π’ качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π±Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ сортировка вставками, β€œΠΎΠ±Ρ‹Ρ‡Π½Π°Ρβ€ быстрая сортировка (с ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠΎΡ€Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ), сортировка подсчСтом.

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ Oracle эмпиричСским ΠΏΡƒΡ‚Π΅ΠΌ вычислили ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ размСрности массивов для задСйствования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки. Π­Ρ‚ΠΈ значСния записаны Π² ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… полях класса DualPivotQuickSort. Для наглядности я свСл ΠΈΡ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 2.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск

НСдавно (Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄) Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π»Π° ΡΡ‚Π°Ρ‚ΡŒΡ Волько 10% программистов способны Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск. Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск β€” это классичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска. Мало Ρ‚ΠΎΠ³ΠΎ, это Π΅Ρ‰Π΅ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ: Π±Π΅Ρ€Π΅ΠΌ отсортированный массив, смотрим Π² сСрСдину, Ссли Π½Π΅ нашли Ρ‚Π°ΠΌ число, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² сСрСдинС β€” ΠΈΡ‰Π΅ΠΌ это число этим ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π»ΠΈΠ±ΠΎ Π² Π»Π΅Π²ΠΎΠΉ части, Π»ΠΈΠ±ΠΎ Π² ΠΏΡ€Π°Π²ΠΎΠΉ, откидывая срСдний элСмСнт. Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅, просто Π±Π΅Ρ€Π΅ΠΌ Π½Π΅ массив, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ВсС ΠΎΡ‡Π΅Π½ΡŒ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ просто, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ описан ΠΏΠΎΡ‡Ρ‚ΠΈ Π²Π΅Π·Π΄Π΅, всС Π±Π°Π³ΠΈ словлСны ΠΈ описаны.

Π’Π°ΠΊ Π²ΠΎΡ‚, я Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск. Для мСня ΠΎΠ½ Π½ΠΈ капСльки Π½Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π΅Π½. НавСрноС, я нСнастоящий программист. А вСдь Ρ‚Π°ΠΊ ΠΈ Π΅ΡΡ‚ΡŒ, я всСго-лишь студСнт, Π½ΠΎ вСдь это Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΈΠ΅? Если Ρ‚ΠΎΡ‡Π½Π΅Π΅, я Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ красивый Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск. ВсС врСмя Ρƒ мСня Π²Ρ‹Π»Π΅Π·Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π»ΠΈΠ±ΠΎ с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, Π»ΠΈΠ±ΠΎ с ΠΊΡ€Π°ΡΠΈΠ²ΠΎΡΡ‚ΡŒΡŽ, Π»ΠΈΠ±ΠΎ ΠΈ с Ρ‚Π΅ΠΌ, ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Π΄Π°, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΠ΅Π»Ρ‚ΠΎΠ²Π°Ρ‚.
ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ этот Ρ‚ΠΎΠΏΠΈΠΊ, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ свою Π²Π΅Ρ€ΡΠΈΡŽ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска β€” для отсортированного массива. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Π² зависимости ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, поиск Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, ΠΈΠ»ΠΈ любой ΠΈΠ· Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…. Π•Ρ‰Π΅ для сравнСния, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Для Π½Π°Ρ‡Π°Π»Π°, я Π±ΡƒΠ΄Ρƒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° C#. Π― надСюсь, ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΉΠΌΡƒΡ‚ ΠΌΠΎΠΉ ΠΊΠΎΠ΄. Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ поиска я Π±ΡƒΠ΄Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° [left; right), Ρ‚.Π΅. Ρ‚ΠΎΡ‡ΠΊΠ° left Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Π° Ρ‚ΠΎΡ‡ΠΊΠ° right Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ. Для мСня ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, ΠΊ ΠΈΡ… повСдСнию я ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использованиС ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅). Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Β«Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля программирования», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я ΠΏΠΈΡˆΡƒ Ρ†ΠΈΠΊΠ»Ρ‹ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:Π° Π½Π΅ Ρ‚Π°ΠΊ:
Π― Π±ΡƒΠ΄Ρƒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π½ΠΎ ΠΌΠ½Π΅ Π±Π»ΠΈΠΆΠ΅ рСкурсивная, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΠ±Π΅ΡΡΡƒΠ΄ΡŒΡ‚Π΅. Для рСкурсивной вСрсии ΠΌΡ‹ сдСлаСм Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΡ‚ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ:

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΊ использованию ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²: Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» [left, right], Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΅Π³ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° [left, mid β€” 1] ΠΈ [mid + 1; right] (Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‡ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ для запоминания, Π½ΠΎ вСсьма странно).
Π£ ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² индСксах Ρ€Π°Π²Π½ΠΎ 1 (ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ выбрасываСм), Π° Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² β€” 2 β€” магичСской Ρ†ΠΈΡ„Ρ€Π΅, взятой с ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠ°.

ОсобСнно это Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ для сортировки слияниСм, Π³Π΄Π΅ для ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² различия Π² индСксах Π½Π΅Ρ‚Ρƒ (массив дСлится Π½Π° [left, mid) ΠΈ [mid, right)), Π° для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² появляСтся Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎΠ΅ 1 (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ массив дСлится Π½Π° [left, mid] ΠΈ [mid + 1, right], ΠΈΠ»ΠΈ [left, mid β€” 1] ΠΈ [mid, right]).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ части массива Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнт, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, мСньшС Π»ΠΈ срСдний элСмСнт (array[mid]), Ρ‡Π΅ΠΌ ΠΊΠ»ΡŽΡ‡ (key). Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это вСсьма просто β€” Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сначала ΠΎΠ΄ΠΈΠ½ Π·Π½Π°ΠΊ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π° Ссли Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ :-). ΠŸΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ я ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ. МнС постоянно каТСтся, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ Β«ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒΒ».

РСкурсивно:
Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ:
Π Π°Π·Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠ²:

Если Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π² ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ сразу становится понятно, Ρ‡Ρ‚ΠΎ Ссли элСмСнта Π½Π΅Ρ‚, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ остановится. Пониманию этого Ρ„Π°ΠΊΡ‚Π° ΠΎΡ‡Π΅Π½ΡŒ способствуСт while(true), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² рСкурсивной вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, СстСствСнно Π½Π΅Ρ‚. И хотя я написал ΠΊΡƒΡ‡Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ рСкурсивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², я всС Π΅Ρ‰Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π±Ρ‹Π²Π°ΡŽ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ. Как ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ, я Π½Π΅ знаю.

Вторая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² случаС left == right, Ρ‚.Π΅., ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» стал Ρ‚Π°ΠΊΠΈΠΌ β€” [left, right). Ну ΠΈΠ»ΠΈ Π² случаС, ΠΊΠΎΠ³Π΄Π° right β€” left keyXOR000011101110

Π’.Π΅. Ссли Ρ„Π»Π°Π³ descendingOrder Π½Π΅ установлСн, Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ссли установлСн, Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ΄Π΅Ρ‚ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Но это Β«Ρ…Π°ΠΊΒ», ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. Π― Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ.

РСкурсивно:
Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ:
Π Π°Π·Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠ²:

На всякий случай: ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ направлСния сортировки Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π», Ρ‡Ρ‚ΠΎ массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пуст. Π― Ρ€Π΅ΡˆΠΈΠ» Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ этот Ρ„Π΅ΠΉΠ» Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° β„–4

какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС. Π€ΠΎΡ‚ΠΎ какая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска элСмСнта Π² отсортированном массивС

Π”Π°Π±Ρ‹ ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π½Π° Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ, сразу скаТу, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ Π² случаС, ΠΊΠΎΠ³Π΄Π° самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· ΠΏΠΎΠ»ΡƒΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Ρ€Π°Π²Π΅Π½ ΠΊΠ»ΡŽΡ‡Ρƒ. Ну Π° Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ срСдний элСмСнт Ρ€Π°Π²Π΅Π½ ΠΊΠ»ΡŽΡ‡Ρƒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Π›ΠΈΠ±ΠΎ срСдний слСдуСт Π·Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ, ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π΅ Ρ€Π°Π²Π΅Π½ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рСкурсия Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ. Π›ΠΈΠ±ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ поиска (см. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π²Ρ‹ΡˆΠ΅)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Leave a Reply

Your email address will not be published. Required fields are marked *