Π Π°Π±ΠΎΡ‚Π° с коллСкциями Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ для любого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8. НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, создаСтС Π»ΠΈ Π²Ρ‹ слоТныС ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ быстро Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт срСди сотСн ΠΈΠ»ΠΈ тысяч Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ постоянно. ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ критичСскому падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы, особСнно Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ исполнСния.

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

ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поиск ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π½ΠΎ ΠΈ поиск ΠΏΠΎ индСксу, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Массив, Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ БписокЗначСний. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ ситуации, ΠΊΠΎΠ³Π΄Π° элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΈ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²Ρ‹Π΄Π°Π²Π°Π»ΠΎ ошибок ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π­Ρ‚ΠΎ Π·Π½Π°Π½ΠΈΠ΅ сэкономит Π²Π°ΠΌ часы ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ поиск с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти

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

Однако Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ объСма Π΄Π°Π½Π½Ρ‹Ρ… врСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ растСт Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. Если Π² вашСм массивС содСрТится 10 000 элСмСнтов, ΠΈ искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ находится Π² самом ΠΊΠΎΠ½Ρ†Π΅ ΠΈΠ»ΠΈ отсутствуСт вовсС, систСмС придСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 10 000 сравнСний. Π’ Ρ†ΠΈΠΊΠ»Π°Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ тысячи Ρ€Π°Π· Π·Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, такая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом всСй систСмы.

Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятСн Π΄Π°ΠΆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам. Достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈ систСма Π²Π΅Ρ€Π½Π΅Ρ‚ ссылку Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно, Ссли совпадСний Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ.

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π―Π±Π»ΠΎΠΊΠΎ");

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π“Ρ€ΡƒΡˆΠ°");

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘Π»ΠΈΠ²Π°");

НайдСнныйЭлСмСнт = ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Найти("Π“Ρ€ΡƒΡˆΠ°");

Если НайдСнныйЭлСмСнт = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½");

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½: " + НайдСнныйЭлСмСнт);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти чувствитСлСн ΠΊ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ рСгистру строк. ΠŸΡ€ΠΈ поискС строки "Π³Ρ€ΡƒΡˆΠ°" (с малСнькой Π±ΡƒΠΊΠ²Ρ‹) Π² массивС, содСрТащСм "Π“Ρ€ΡƒΡˆΠ°", Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ часто приходится ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия сравнСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Найти Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ НСопрСдСлСно, Π° Π½Π΅ лоТь. ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° равСнство НСопрСдСлСно, ΠΈΠ½Π°Ρ‡Π΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΈ поискС числа 0 ΠΈΠ»ΠΈ пустой строки.

πŸ’‘

Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ строки ΠΈ рСгистр Π½Π΅ Π²Π°ΠΆΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрНачинаСтсяБ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠ±Π΅ строки ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ рСгистру Ρ‡Π΅Ρ€Π΅Π· НРСг() ΠΏΠ΅Ρ€Π΅Π΄ сравнСниСм.

Поиск ΠΏΠΎ индСксу ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сущСствования

Π’ ситуациях, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π½Π΅ само Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡ. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° порядковый Π½ΠΎΠΌΠ΅Ρ€ элСмСнта, ΠΈΠ»ΠΈ -1, Ссли элСмСнт отсутствуСт. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π² 1Π‘ начинаСтся с нуля, Ρ‡Ρ‚ΠΎ являСтся стандартной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° языков программирования ΠΈ часто становится ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ошибок Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

ИспользованиС индСкса позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта, Π½ΠΎ ΠΈ сразу ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ удалСния. Π­Ρ‚ΠΎ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π² сцСнариях, Π³Π΄Π΅ массив выступаСт Π² Ρ€ΠΎΠ»ΠΈ упорядочСнного списка Π·Π°Π΄Π°Ρ‡ ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Зная Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ структурой Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ поиска.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ статус элСмСнта Π² especΓ­fico ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:

ИндСкс = ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡ("Π‘Π»ΠΈΠ²Π°");

Если ИндСкс <> -1 Π’ΠΎΠ³Π΄Π°

// ЗамСняСм элСмСнт ΠΏΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ индСксу

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…[ИндСкс] = "Π‘Π»ΠΈΠ²Π° (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°)";

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ˜Π½Π΄Π΅ΠΊΡΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнт, начиная с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС вхоТдСния Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ значСния Π² массивС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· сдвигая Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ поиска Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ индСкса.

  • πŸ” Найти β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ НСопрСдСлСно.
  • πŸ”’ ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡ β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ числовой индСкс ΠΈΠ»ΠΈ -1.
  • πŸ”„ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ˜Π½Π΄Π΅ΠΊΡΡƒ β€” позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ стартовой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами частоС использованиС поиска ΠΏΠΎ индСксу Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСэффСктивным. Если Π»ΠΎΠ³ΠΈΠΊΠ° вашСго Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° позволяСт, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ поиска, сохраняя Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ индСксы Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Найти (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚)
ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡ (число)
Π ΡƒΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΎΠΌ
Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с индСксом

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ поиска: Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

Когда объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС исчисляСтся тысячами ΠΈ Π±ΠΎΠ»Π΅Π΅ записСй, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск становится Π½Π΅ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€ΠΎΡΠΊΠΎΡˆΡŒΡŽ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ элСмСнты Π·Π° логарифмичСскоС врСмя. Однако для Π΅Π³ΠΎ примСнСния сущСствуСт ΠΎΠ΄Π½ΠΎ критичСскоС условиС: массив Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отсортирован.

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сравниваСт искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ со срСдним элСмСнтом массива. Если искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС срСднСго, поиск продолТаСтся Π² Π»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅, Ссли большС β€” Π² ΠΏΡ€Π°Π²ΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΎΠ±Π»Π°ΡΡ‚ΡŒ поиска сокращаСтся Π²Π΄Π²ΠΎΠ΅. Для массива ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° элСмСнтов Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 20 сравнСний, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ β€” Π΄ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°.

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘ Π½Π΅Ρ‚ встроСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° "Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉΠŸΠΎΠΈΡΠΊ", поэтому Π΅Π³ΠΎ рСализация лоТится Π½Π° ΠΏΠ»Π΅Ρ‡ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это дСлаСтся Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» с вычислСниСм срСднСго индСкса. Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° поиска, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ зацикливания ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ массива.

Ѐункция Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉΠŸΠΎΠΈΡΠΊ(Массив, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

Начало = 0;

ΠšΠΎΠ½Π΅Ρ† = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1;

Пока Начало <= ΠšΠΎΠ½Π΅Ρ† Π¦ΠΈΠΊΠ»

Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ = Начало + (ΠšΠΎΠ½Π΅Ρ† - Начало) / 2;

Если Массив[Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ;

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Массив[Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ] < Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

Начало = Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ + 1;

Π˜Π½Π°Ρ‡Π΅

ΠšΠΎΠ½Π΅Ρ† = Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ - 1;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ -1;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ сортировка массива сама ΠΏΠΎ сСбС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСсурсов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° массив формируСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° поиск ΠΏΠΎ Π½Π΅ΠΌΡƒ выполняСтся ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ. Если массив постоянно мСняСтся ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСсортировки ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ поиском, Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠ²Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° сортировку.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска ΠΊ нСсортированному массиву ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ нСпрСдсказуСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΈ логичСским ошибкам. ВсСгда Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ порядок элСмСнтов ΠΏΠ΅Ρ€Π΅Π΄ запуском Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° срСднСго индСкса выглядит Ρ‚Π°ΠΊ?

Π€ΠΎΡ€ΠΌΡƒΠ»Π° (Начало + ΠšΠΎΠ½Π΅Ρ†) / 2 ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ цСлочислСнного Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… индСксах. БСзопаснСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Начало + (ΠšΠΎΠ½Π΅Ρ† - Начало) / 2.

ИспользованиС Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для поиска

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

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим прСимущСством, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс ΠΏΠΎ Ρ‚Π΅ΠΌ полям, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ планируСтся поиск. ПослС этого ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот индСкс, игнорируя ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ строки. Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими объСмами структурированных Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ трСбуСтся частая Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ настройки выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.
  2. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· источника.
  3. Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π˜Π½Π΄Π΅ΠΊΡΡ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Π² имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ для индСксации.
  4. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массива, Π³Π΄Π΅ хранятся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ. Π­Ρ‚ΠΎ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ограничСния, Π½ΠΎ Π΄Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² скорости ΠΈ удобствС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈ рСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Поиск Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для слоТных Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ Π² 1Π‘.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π’ΠΈΠΏ поиска Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ (O) ВрСбования
Массив Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ O(n) НСт
Массив (сортированный) Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ O(log n) Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°
Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ По индСксу O(1) - O(log n) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСкса
БоотвСтствиС Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Π° O(1) Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡
πŸ’‘

Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с настроСнными индСксами β€” это самый ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² 1Π‘.

Поиск Π² БоотвСтствии ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… коллСкциях

Помимо массивов ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†, Π² арсСналС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘ Π΅ΡΡ‚ΡŒ структура Π΄Π°Π½Π½Ρ‹Ρ… БоотвСтствиС (Map). Она Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, обСспСчивая практичСски ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ элСмСнту ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ. Если ваша Π·Π°Π΄Π°Ρ‡Π° сводится ΠΊ поиску значСния ΠΏΠΎ извСстному ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, БоотвСтствиС Π±ΡƒΠ΄Π΅Ρ‚ самым быстрым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, прСвосходящим Π΄Π°ΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ БоотвСтствии поиск осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. Если ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ сущСствуСт, систСма Π²Π΅Ρ€Π½Π΅Ρ‚ НСопрСдСлСно.

Для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Ρ‚ΠΈΠΏΠ° БписокЗначСний поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ массиву, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности. БписокЗначСний часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² интСрфСйсных элСмСнтах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ поля Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ списки. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡŽ позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнт, сравнивая Π½Π΅ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка, Π° Π΅Π³ΠΎ свойство Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² спискС хранятся слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ.

Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ зависит ΠΎΡ‚ сцСнария использования:

  • πŸš€ БоотвСтствиС: Π½ΡƒΠΆΠ΅Π½ доступ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°.
  • πŸ“Š Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: Π½ΡƒΠΆΠ½Π° сортировка, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ.
  • πŸ“ Бписок Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: трСбуСтся Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ (ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ°, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°) для интСрфСйса.

НС стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив для хранСния ΠΏΠ°Ρ€ "ΠšΠ»ΡŽΡ‡-Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ БоотвСтствиС. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ массива для поиска ΠΊΠ»ΡŽΡ‡Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ β€” это классичСская ошибка, вСдущая ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ зависимости Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΎΡ‚ количСства элСмСнтов.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании БоотвСтствия Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (строки, числа, Π΄Π°Ρ‚Ρ‹, ссылки). ИспользованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ массивов Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ нСдопустимо.

β˜‘οΈ Π’Ρ‹Π±ΠΎΡ€ структуры Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций

ΠŸΡ€ΠΈ поискС Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС критичСски Π²Π°ΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° искомый элСмСнт отсутствуСт. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° поиска ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ свойствам Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, НайдСнныйЭлСмСнт.Имя) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ остановкС выполнСния ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ особСнно нСприятно Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… заданиях, Π³Π΄Π΅ ошибка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° сбоя бизнСс-процСсса.

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

ВсСгда Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ вашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² случаС Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ поиска. Π”ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ? Π§Π΅Ρ‚ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этого ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π±Π°Π³ΠΎΠ² ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ бСзопасной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Массив.Найти(Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² Π±Π°Π·Π΅";

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

// Π Π°Π±ΠΎΡ‚Π° с элСмСнтом

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка поиска: " + ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном исполнСнии 1Π‘ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром для поиска Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. По возмоТности выполняйтС поиск Π½Π° Ρ‚ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π³Π΄Π΅ находятся Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ сСти.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

Как Π½Π°ΠΉΡ‚ΠΈ всС вхоТдСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π² массивС?

ΠœΠ΅Ρ‚ΠΎΠ΄ Найти Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ совпадСниС. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ˜Π½Π΄Π΅ΠΊΡΡƒ. НачинайтС поиск с индСкса 0, Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ индСкс Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта плюс Π΅Π΄ΠΈΠ½ΠΈΡ†Π°. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ -1.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ поиск Π² Π’Π°Π±Π»ΠΈΡ†Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Π² МассивС?

Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ созданиС индСксов ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ индСкса систСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° B-Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для поиска, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива, особСнно Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

МоТно Π»ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² массивС структур ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ поля структуры?

ΠΠ°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти ΠΈΡ‰Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ совпадСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° структуры. Для поиска ΠΏΠΎ полю Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ свойство структуры Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Найти ΠΈ ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡ?

Найти Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (элСмСнт массива), Ρ‡Ρ‚ΠΎ позволяСт сразу Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (число), Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для удалСния элСмСнта ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ Π΅Π³ΠΎ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обращСния ΠΊ массиву для получСния самого значСния.