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

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

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

ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство массива Π² 1Π‘

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

НумСрация элСмСнтов Π² классичСском массивС 1Π‘ начинаСтся с нуля. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” 1, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ являСтся основным способом доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту с индСксом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ сущСствуСт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ пятому элСмСнту Π² массивС ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов), систСма выдаст ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

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

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ… ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ элСмСнтам массива Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², вынося ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ вычислСния Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π° для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ инициализация массивов

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания массива Π² ΠΊΠΎΠ΄Π΅ 1Π‘ довольно прост ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятСн. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор Ρ‚ΠΈΠΏΠ° Массив. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ структуру ΠΈΠ»ΠΈ сразу ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€, хотя Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ динамичСскоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ.

Рассмотрим Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис объявлСния. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив для хранСния списка Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ присваиваСтС Π΅ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ПослС этого массив Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ содСрТит ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. НаполнСниС происходит поэтапно Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

  • πŸ—οΈ ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Массив Π±Π΅Π· указания Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
  • πŸ“¦ ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() для помСщСния значСния Π² ΠΊΠΎΠ½Π΅Ρ† списка.
  • πŸ”’ ΠŸΡ€ΡΠΌΠΎΠ΅ присваиваниС значСния ΠΏΠΎ индСксу, Ссли индСкс ΡƒΠΆΠ΅ сущСствуСт ΠΈΠ»ΠΈ массив Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½.
  • πŸ”„ Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива значСниями ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ источника, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ запроса.

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

β˜‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ инициализация массива

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов ΠΈΠ· массива Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Для ΠΏΠΎ индСксам Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ остороТны. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ сдвигаСт индСксы ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ пропуску Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ошибкС Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Пока ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ массив Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

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

πŸ“Š Какой способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ"
Π¦ΠΈΠΊΠ» "Для" ΠΏΠΎ индСксам
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ
РСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры

Π₯отя ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π΄Π°Ρ‡, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ слоТной ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ структуры Ρ‚ΠΈΠΏΠ° "массив массивов". Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ Π΄Π΅Ρ€Π΅Π²Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Π²Π½ΡƒΡ‚Ρ€ΡŒ элСмСнтов основного массива Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы. Доступ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ элСмСнту Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ указания Π΄Π²ΡƒΡ… индСксов: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° строку (внСшний массив), Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π½Π° столбСц (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ массив). Бинтаксис выглядит ΠΊΠ°ΠΊ Массив[ИндСкс1][ИндСкс2].

Π’ΠΈΠΏ структуры ОписаниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Бписок Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Бписок сотрудников ΠΎΡ‚Π΄Π΅Π»Π°
Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π’Π°Π±Π»ΠΈΡ†Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° коэффициСнтов
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Π”Π΅Ρ€Π΅Π²ΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²
Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΉ Π Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° (строка, число, Π΄Π°Ρ‚Π°)

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ памяти ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

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

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

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ аспСкт β€” ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ мСста. Если Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Π΅Ρ‚Π΅, сколько элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ Π² массивС, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти, хотя Π² стандартном ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Массив это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ автоматичСски достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π²Π°ΠΆΠ½Π΅Π΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива; для этого Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ВСкстовыйДокумСнт ΠΈΠ»ΠΈ Π‘ΡƒΡ„Π΅Ρ€Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ…Π”Π°Π½Π½Ρ‹Ρ….

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

πŸ’‘

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

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ способы ΠΈΡ… прСдотвращСния

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

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

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ "ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти", хотя Π² 1Π‘ сборщик мусора Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ автоматичСски. Если Π²Ρ‹ создаСтС ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ массивы Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ссылки Π½Π° Π½ΠΈΡ… (присваивая НСопрСдСлСно), это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ€Π΅Π·ΠΊΠΎΠΌΡƒ росту потрСблСния памяти сСрвСром Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° срабатывания сборщика.

  • ❌ ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ().
  • ❌ ИзмСнСниС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²ΠΎ врСмя Π΅Ρ‘ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π² Ρ†ΠΈΠΊΠ»Π΅ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ.
  • ❌ ИспользованиС массива Ρ‚Π°ΠΌ, Π³Π΄Π΅ эффСктивнСС подошСл Π±Ρ‹ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
  • ❌ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ элСмСнтов для вычислСний.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ошибок эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° 1Π‘ с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ останова. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ позволяСт ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ этапС массив ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ состояниС ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Π’ Ρ‡Π΅ΠΌ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ массива ΠΎΡ‚ Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² 1Π‘?

Массив β€” это простая нумСрованная коллСкция, доступ ΠΊ элСмСнтам ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ осущСствляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ индСксу ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ. Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” это структурированный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ ΠΈ строками, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠΎΠ»Π΅ΠΉ (ΠΊΠ°ΠΊ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ сортировки, встроСнныС Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ.

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива послС Π΅Π³ΠΎ создания?

Π”Π°, массив Π² 1Π‘ являСтся динамичСским. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, увСличивая Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Π΅Π³ΠΎ. Ѐиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρƒ стандартного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Массив Π½Π΅Ρ‚.

Как быстро ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ массив ΠΎΡ‚ всСх элСмСнтов?

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

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ 1Π‘ ассоциативныС массивы?

Π’ классичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ (ΠΊΠ°ΠΊ Π² PHP ΠΈΠ»ΠΈ JavaScript) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Массив Π² 1Π‘ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ строковыС ΠΊΠ»ΡŽΡ‡ΠΈ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ассоциативного массива (словаря) Π² 1Π‘ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БоотвСтствиС, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ строки.