Π Π°Π±ΠΎΡ‚Π° с коллСкциями Π΄Π°Π½Π½Ρ‹Ρ… являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ любой слоТной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² срСдС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. Когда программист сталкиваСтся с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ значСния срСди мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ…, вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Π² массивС 1Π‘, становится критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы. Ошибки Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ замСдлСнию ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ зависанию интСрфСйса ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

БущСствуСт нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этой Π·Π°Π΄Π°Ρ‡ΠΈ, начиная ΠΎΡ‚ встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ заканчивая Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ элСмСнтов. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ способа зависит ΠΎΡ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΈΠΏΠ° Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΊΠΎΠ΄Π°. ПониманиС нюансов ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ чистый, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ростС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

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

ВстроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска элСмСнта

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

Однако Если Π² массивС хранятся простыС Ρ‚ΠΈΠΏΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ числа ΠΈΠ»ΠΈ строки, ΠΌΠ΅Ρ‚ΠΎΠ΄ сработаСт ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. Но ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со слоТными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ структурами ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сравнСниС происходит ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΠΏΠΎ содСрТимому Π² зависимости ΠΎΡ‚ контСкста.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Найти() чувствитСлСн ΠΊ рСгистру ΠΏΡ€ΠΈ поискС строк. Если Π²Π°ΠΌ трСбуСтся рСгистронСзависимый поиск, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ использования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сравнСния.

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

МассивЧисСл = Новый Массив;

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(10);

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(20);

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(30);

ИндСкс = МассивЧисСл.Найти(20);

Если ИндСкс <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ ΠΏΠΎ индСксу: " + ИндСкс);

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

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Для слоТных условий Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹.

Поиск с использованиСм Ρ†ΠΈΠΊΠ»Π° ΠΈ условий

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

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

Рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ слово, игнорируя рСгистр. ВстроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ здСсь Π½Π΅ справится, Π½ΠΎ Ρ†ΠΈΠΊΠ» с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ БтрНайти Ρ€Π΅ΡˆΠΈΡ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Вакая Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ инструмСнтом Π² арсСналС программиста 1Π‘.

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ = Новый Массив;

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

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

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("АпСльсин");

НайдСно = Π›ΠΎΠΆΡŒ;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ Π¦ΠΈΠΊΠ»

Если БтрНайти(Π’Ρ€Π΅Π³(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚), "ГРУША") > 0 Π’ΠΎΠ³Π΄Π°

НайдСно = Π˜ΡΡ‚ΠΈΠ½Π°;

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

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

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

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»Π° поиска

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

Π Π°Π±ΠΎΡ‚Π° со структурами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ массива

Часто массивы Π² 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях прямой поиск ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ каТдая структура β€” это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр, Π΄Π°ΠΆΠ΅ Ссли ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ значСния ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. Π—Π΄Π΅ΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнт ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ поиск структур ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ?

Π’ 1Π‘ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС. Π”Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ структуры с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ содСрТимым ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ совпадСния, Ссли Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ структуру, Π° Π½Π΅ ссылку Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ дСмонстрируСт, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ структуру с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π° "Код". ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ() для бСзопасного доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки ΠΏΡ€ΠΈ отсутствии ΠΊΠ»ΡŽΡ‡Π°.

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ = Новый Массив;

Π‘Ρ‚Ρ€1 = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Код, НаимСнованиС", 1, "Π’ΠΎΠ²Π°Ρ€ А");

Π‘Ρ‚Ρ€2 = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Код, НаимСнованиС", 2, "Π’ΠΎΠ²Π°Ρ€ Π‘");

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€1);

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€2);

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠšΠΎΠ΄ = 2;

НайдСннаяБтруктура = НСопрСдСлСно;

Для КаТдого Π’Π΅ΠΊΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Из ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ Π¦ΠΈΠΊΠ»

Если Π’Π΅ΠΊΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Код = Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠšΠΎΠ΄ Π’ΠΎΠ³Π΄Π°

НайдСннаяБтруктура = Π’Π΅ΠΊΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ поискС Π²Π½ΡƒΡ‚Ρ€ΠΈ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ Π² структурС. НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² условиях сравнСния ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ логичСским ошибкам.

ИспользованиС запроса для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ массива

Π’ ситуациях, ΠΊΠΎΠ³Π΄Π° массив ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° поиска ΠΊΡ€Π°ΠΉΠ½Π΅ слоТна, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ запросов. Π₯отя запросы Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π² 1Π‘ сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ· массивов. Π­Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык запросов для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ условия Π“Π”Π•, сортировку ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ.

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰Π°Ρ основныС характСристики Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² поиска Π² зависимости ΠΎΡ‚ объСма Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ слоТности условий.

ΠœΠ΅Ρ‚ΠΎΠ΄ поиска Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΠΌΠ°Π»Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…
Массив.Найти() Низкая Высокая БрСдняя
Π¦ΠΈΠΊΠ» с условиСм БрСдняя Высокая Низкая
Запрос (ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π°) Высокая БрСдняя Высокая
Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ (Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ) Высокая ΠžΡ‡Π΅Π½ΡŒ высокая ΠžΡ‡Π΅Π½ΡŒ высокая
πŸ’‘

Для массивов объСмом Π±ΠΎΠ»Π΅Π΅ 10 000 элСмСнтов со слоТными условиями Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ запросов часто оказываСтся быстрСС Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ поиска Ρ‡Π΅Ρ€Π΅Π· словари ΠΈ соотвСтствия

Если Π·Π°Π΄Π°Ρ‡Π° поиска Π² массивС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, стандартный ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ становится "ΡƒΠ·ΠΊΠΈΠΌ Π³ΠΎΡ€Π»Ρ‹ΡˆΠΊΠΎΠΌ". Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БоотвСтствиС (ΠΈΠ»ΠΈ Map Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков). Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ соотвСтствия позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π·Π° константноС врСмя, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΏΠΎ массиву для заполнСния соотвСтствия, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ элСмСнта, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ β€” сам элСмСнт ΠΈΠ»ΠΈ Π΅Π³ΠΎ индСкс. ПослС этой ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ любой ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ поиск выполняСтся ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исходной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ компромисса ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ памяти ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ вычислСний.

РСализация Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΊΠΎΠ΄Π° Π½Π° этапС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ окупаСтся сторицСй ΠΏΡ€ΠΈ частых обращСниях ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. ОсобСнно это Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² цикличСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ слоТных ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

Массив = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…();

Поиск = Новый БоотвСтствиС;

// ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° индСкса

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Поиск.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

// ΠœΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ поиск

НуТныйЭлСмСнт = Поиск.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(12345);

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Массив.Найти()
Π¦ΠΈΠΊΠ» с Если
Запросы
БоотвСтствиС (Map)
НС знаю

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ВсСгда провСряйтС синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок совмСстимости.

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

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ поиск Π² Ρ†ΠΈΠΊΠ»Π΅?

ВыноситС вычислСния, Π½Π΅ зависящиС ΠΎΡ‚ элСмСнта Ρ†ΠΈΠΊΠ»Π°, Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°. НапримСр, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρƒ ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ строку для сравнСния, сохранитС Π΅Ρ‘ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°, Π° Π½Π΅ вычисляйтС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() для рСгистронСзависимого поиска?

НСт, ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() выполняСт строгоС сравнСниС. Для рСгистронСзависимого поиска Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» с функциями прСобразования рСгистра, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π’Ρ€Π΅Π³() ΠΈΠ»ΠΈ НрСг(), Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ запросы с настройкой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сравнСния.

Π§Ρ‚ΠΎ быстрСС: Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ запрос ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅?

Для ΠΌΠ°Π»Ρ‹Ρ… массивов (Π΄ΠΎ 1-2 тысяч строк) Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ быстрСС ΠΈΠ·-Π·Π° отсутствия Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° созданиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ запроса. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… запрос Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π·Π° счСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΠΈΠΆΠΊΠ° Π‘Π£Π‘Π”.

Как Π½Π°ΠΉΡ‚ΠΈ всС вхоТдСния элСмСнта Π² массивС, Π° Π½Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅?

ΠœΠ΅Ρ‚ΠΎΠ΄ Найти() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ всСму массиву ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ индСксы ΠΈΠ»ΠΈ ссылки Π½Π° всС подходящиС элСмСнты Π² Π½ΠΎΠ²Ρ‹ΠΉ массив Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ поиск структуры Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ НСопрСдСлСно, хотя Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ структуры ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти. Π”Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ структуры с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ значСниями ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. НуТно ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ».