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

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

ПониманиС нюансов Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π½Π°ΠΉΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ нСкоррСктная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ΠœΡ‹ рассмотрим ΠΊΠ°ΠΊ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3, Ρ‚Π°ΠΊ ΠΈ спСцифичСскиС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ поиска Π² коллСкциях 1Π‘

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

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ число 10 ΠΈ строка "10" Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ элСмСнтами, Π΄Π°ΠΆΠ΅ Ссли Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. ΠŸΡ€ΠΈ поискС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ искомой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ совпадаСт с Ρ‚ΠΈΠΏΠΎΠΌ элСмСнтов, хранящихся Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ поиска рСгистрозависимы ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками. Π‘Ρ‚Ρ€ΠΎΠΊΠ° "ΠšΠ»ΠΈΠ΅Π½Ρ‚" ΠΈ строка "ΠΊΠ»ΠΈΠ΅Π½Ρ‚" Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ значСниями. Для игнорирования рСгистра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ строки ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² спискС Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² конкрСтная организация.

ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("ООО Ромашка"));

ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("ИП Иванов"));

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("ООО Ромашка");

Если ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².Найти(Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚) <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ Π² спискС!");

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π’Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π° Π² спискС Π½Π΅Ρ‚.");

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

ИспользованиС встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, поиск Π² пустом массивС, Π½Π΅ вызывая ошибок выполнСния.

Алгоритм Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… спСцифичСских ситуациях встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдостаточно. НапримСр, Ссли ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ поиска Π½Π΅ сводится ΠΊ простому совпадСнию Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ выполнСния слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ ΠΊ классичСскому Ρ†ΠΈΠΊΠ»Ρƒ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ.. Из.. Π¦ΠΈΠΊΠ».

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

Однако Ρƒ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΈ нСдостатки. Код становится Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹ΠΌ ошибкам, особСнно Ссли Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Ρƒ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ВстроСнный Найти()
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»
ΠŸΠΎΠΈΡΠΊΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°
Ѐункция БтрНайти

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поиска с использованиСм Ρ†ΠΈΠΊΠ»Π°, Π³Π΄Π΅ условиСм являСтся Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ совпадСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΅Π³ΠΎ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°.

ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ² = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ²();

НуТныйВовар = НСопрСдСлСно;

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

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π’ΠΎΠ²Π°Ρ€ Из ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π¦ΠΈΠΊΠ»

Если Π’ΠΎΠ²Π°Ρ€.Артикул = "A-12345" Π’ΠΎΠ³Π΄Π°

НуТныйВовар = Π’ΠΎΠ²Π°Ρ€;

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

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

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

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

Если НайдСн Π’ΠΎΠ³Π΄Π°

// ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠΌ

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

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

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²

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

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вхоТдСния ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ эффСктивности ΠΈ удобства использования.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ условий
Массив.Найти() Высокая ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Волько Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС
Массив.ΠŸΠΎΠΈΡΠΊΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°() Высокая ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Волько Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС
Π¦ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ" БрСдняя БрСдняя Π›ΡŽΠ±Π°Ρ слоТная Π»ΠΎΠ³ΠΈΠΊΠ°
Π¦ΠΈΠΊΠ» "Для.. По.." Низкая Низкая Доступ ΠΊ индСксу

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

πŸ’‘

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с массивом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ постоянно растСт, рассмотритС использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° "БоотвСтствиС" вмСсто массива. Поиск ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² БоотвСтствии происходит ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

ПовСдСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² поиска ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² массивС. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ числа, строки ΠΈ Π΄Π°Ρ‚Ρ‹, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. БсылочныС Ρ‚ΠΈΠΏΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ справочники, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ пСрСчислСния, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ссылки.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистр Π±ΡƒΠΊΠ² ΠΈΠ»ΠΈ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. ВстроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅: привСсти всС строки Π² массивС ΠΈ ΠΈΡΠΊΠΎΠΌΡƒΡŽ строку ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ рСгистру с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ БтрНиТ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ поискС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° Π₯ранСниСЗначСния ΠΈΠ»ΠΈ сСриализованных Π΄Π°Π½Π½Ρ‹Ρ… прямоС сравнСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях трСбуСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ дСсСриализация ΠΈΠ»ΠΈ сравнСниС ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ.

Для числовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (Ρ‚ΠΈΠΏ Число с Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ) прямоС сравнСниС Π½Π° равСнство ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΈΠ·-Π·Π° особСнностСй прСдставлСния чисСл Π² памяти. Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ с нСбольшой ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ссли Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ вычислСний ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв

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

ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти ΠΏΠ΅Ρ€Π΅Π΄ использованиСм Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ индСкса. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту массива ΠΏΠΎ индСксу НСопрСдСлСно Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния прилоТСния. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ справСдливо ΠΈ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠΈΡΠΊΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°, хотя ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ индСкс.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт β€” типизация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если массив ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² 1Π‘, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ массивы Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ строго), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ совмСстимый Ρ‚ΠΈΠΏ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ссылку Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈ строку Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ даст ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π½ΠΎ ΠΈ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, просто Π²Π΅Ρ€Π½ΡƒΠ² НСопрСдСлСно.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ НСопрСдСлСно Π² 1Π‘?

НСопрСдСлСно β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ отсутствиС значСния. Он Π½Π΅ Ρ€Π°Π²Π΅Π½ NULL, ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈΠ»ΠΈ 0. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ отсутствия Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ <> НСопрСдСлСно.

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ поиска Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах

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

Если массив отсортирован, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сокращаСт количСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ с Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ зависимости Π΄ΠΎ логарифмичСской. Однако Π² 1Π‘ Π½Π΅Ρ‚ встроСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска для массива, поэтому Π΅Π³ΠΎ придСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎ услоТняСт ΠΊΠΎΠ΄. Π§Π°Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БоотвСтствиС.

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

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

πŸ’‘

Для массивов Π±ΠΎΠ»Π΅Π΅ 1000 элСмСнтов Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БоотвСтствиС ΠΈΠ»ΠΈ запрос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… вмСсто ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π² памяти.

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ поиска

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

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

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ подстроки Π² массив строк?

ΠœΠ΅Ρ‚ΠΎΠ΄ Найти ΠΈΡ‰Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ совпадСниС строки. Для поиска подстроки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрНайти Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки массива. ВстроСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для поиска ΠΏΠΎ частичному совпадСнию Π² массивС Π½Π΅Ρ‚.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "Π’" для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ массива?

НСт, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ языка запросов Π’ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкстов запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ встроСнном языкС 1Π‘ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вхоТдСния Π² массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹. Бинтаксис Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ Массив Π’ΠΎΠ³Π΄Π° Π½Π΅ поддСрТиваСтся.

Π§Ρ‚ΠΎ быстрСС: Массив.Найти() ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»?

ΠœΠ΅Ρ‚ΠΎΠ΄ Массив.Найти() практичСски всСгда быстрСС Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π Π°Π·Π½ΠΈΡ†Π° становится ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΉ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах. Π¦ΠΈΠΊΠ» ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ слоТной Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΎΡ‚Π±ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ простым сравнСниСм.

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

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

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ поиск Π² массивС структур?

Π”Π°, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π”Π²Π΅ структуры ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ, Ссли ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π° всСх ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ… значСния. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ Π² структурС Π½Π΅ Π²Π°ΠΆΠ΅Π½ для сравнСния. Если структуры Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΈΠ»ΠΈ содСрТат ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, сравнСниС происходит рСкурсивно.