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

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

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

Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ массивов Π² 1Π‘

Массив Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ прСдставляСт собой ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся ΠΏΠΎ числовому индСксу. НумСрация элСмСнтов всСгда начинаСтся с нуля, Ρ‡Ρ‚ΠΎ являСтся стандартом для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных языков программирования. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” 1, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1.

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

БущСствуСт Π΄Π²Π° основных способа создания массива: Ρ‡Π΅Ρ€Π΅Π· конструктор ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. НСзависимо ΠΎΡ‚ способа создания, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ доступа ΠΊ элСмСнтам остаСтся Π΅Π΄ΠΈΠ½Ρ‹ΠΌ. Для получСния значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ синтаксис Массив[ИндСкс], Π° для присваивания β€” Массив[ИндСкс] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу, систСма выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния.

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

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство Β«ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΒ» массива Π² условиях Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтам.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти для простых Ρ‚ΠΈΠΏΠΎΠ²

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

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

Массив = Новый Массив;

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π―Π±Π»ΠΎΠΊΠΎ");

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π“Ρ€ΡƒΡˆΠ°");

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘Π»ΠΈΠ²Π°");

ИндСкс = Массив.Найти("Π“Ρ€ΡƒΡˆΠ°");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 1

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉΠ˜Π½Π΄Π΅ΠΊΡ = Массив.Найти("АпСльсин");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: НСопрСдСлСно

Однако Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти Π΅ΡΡ‚ΡŒ сущСствСнноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с простыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° трСбуСтся Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнит ссылки Π² памяти, Π° Π½Π΅ содСрТимоС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со слоТными структурами.

πŸ’‘

ΠœΠ΅Ρ‚ΠΎΠ΄ «Найти» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ «НСопрСдСлСно», Ссли элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, поэтому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ всСгда Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ использованиСм.

Поиск индСкса Π² массивС структур ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

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

Алгоритм поиска Π² массивС структур выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π²Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-Ρ„Π»Π°Π³ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для хранСния индСкса, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ всСм элСмСнтам массива. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ сравниваСтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ поля Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ структуры с искомым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Π²Ρ‹ фиксируСтС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ индСкс ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ» для экономии рСсурсов.

  • πŸ” Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ИндСксПоиска Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ НСопрСдСлСно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°.
  • πŸ”„ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Для ИндСкс = 0 По Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 для получСния доступа ΠΊ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.
  • βœ… Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ сразу послС нахоТдСния элСмСнта, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ лишниС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ»Π½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ ΠΏΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ совпадСнию, Π° ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π²ΡƒΡŽ структуру, Π³Π΄Π΅ ΠΏΠΎΠ»Π΅ Β«Π¦Π΅Π½Π°Β» большС 1000, ΠΈΠ»ΠΈ Π³Π΄Π΅ ΠΏΠΎΠ»Π΅ «НаимСнованиС» начинаСтся Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со слоТными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

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

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ БоотвСтствиС

Когда объСм Π΄Π°Π½Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΠΊ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ поиска Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ часто, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Β«ΡƒΠ·ΠΊΠΈΠΌ мСстом» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ для быстрого поиска. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БоотвСтствиС.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ строки ΠΏΠΎ Π½Π°Π±ΠΎΡ€Ρƒ условий. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ для поиска ΠΈ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½ΠΎ для получСния индСкса (Π½ΠΎΠΌΠ΅Ρ€Π° строки) придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния ΠΈΠ»ΠΈ свойства строки.

Π’ΠΈΠΏ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° условий Π›ΡƒΡ‡ΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
Массив Низкая (O(n)) Волько Ρ€ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠœΠ°Π»Ρ‹Π΅ списки, порядок Π²Π°ΠΆΠ΅Π½
БоотвСтствиС Высокая (O(1)) По Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ, кэши, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ID
Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ БрСдняя/Высокая По нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ, ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹

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

πŸ“Š Какой Ρ‚ΠΈΠΏ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго для поиска Π΄Π°Π½Π½Ρ‹Ρ…?
Массив
Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
БоотвСтствиС
Бписок Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π° для поиска индСкса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° искомый элСмСнт отсутствуСт. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого Ρ„Π°ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмому повСдСнию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Ссли Π²Ρ‹ присвоитС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Число, Π° элСмСнт Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка прСобразования Ρ‚ΠΈΠΏΠΎΠ².

ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска. Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти это дСлаСтся Ρ‡Π΅Ρ€Π΅Π· сравнСниС с НСопрСдСлСно. Для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° провСряйтС, измСнилось Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ «бСзопасного программирования» спасСт вас ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… ошибок Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ эксплуатации.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска ΠΊΠ°ΠΊ индСкс для доступа ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ массиву, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ индСкс находится Π² допустимых Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ массива.

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

β˜‘οΈ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ бСзопасности ΠΏΡ€ΠΈ поискС

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ поиска

Π’ высоконагруТСнных систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ 1Π‘:ERP ΠΈΠ»ΠΈ 1Π‘:Π£Π₯, каТдая миллисСкунда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если ваш ΠΊΠΎΠ΄ выполняСтся Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ тысячам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², нСэффСктивный поиск индСкса ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Ρ€Π°Π·Ρ‹. ОсновноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ количСство ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ индСксы Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов, Π½Π΅ запускайтС Ρ†ΠΈΠΊΠ» поиска для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ массиву ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ сниТаСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ O(n^2) Π΄ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ O(n). Π Π°Π·Π½ΠΈΡ†Π° Π² скорости ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ 10 000 элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ колоссальной.

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

πŸ’‘

Для поиска Π² отсортированном массивС чисСл ΠΈΠ»ΠΈ строк Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск. Π­Ρ‚ΠΎ сократит количСство сравнСний с 1000 Π΄ΠΎ 10 для массива ΠΈΠ· тысячи элСмСнтов.

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

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

МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ всС индСксы ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ значСния Π² массивС?

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

Π§Ρ‚ΠΎ быстрСС: ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ?

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

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс послСднСго элСмСнта массива?

ИндСкс послСднСго элСмСнта всСгда Ρ€Π°Π²Π΅Π½ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1. НС Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ массив Π½Π΅ пуст (ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ > 0), ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этому индСксу.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ поиск с рСгистром символов для строк?

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

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ Π² БоотвСтствии?

НСт, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Массив Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ БоотвСтствиС. ΠšΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ простыС Ρ‚ΠΈΠΏΡ‹ (Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Ρ‚Π°) ΠΈΠ»ΠΈ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π°ΠΌ массив являСтся составным Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для использования Π² качСствС ΠΊΠ»ΡŽΡ‡Π°.