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

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ нюансам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых массивов, Ρ€Π°Π±ΠΎΡ‚Π° с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ структурами, оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, измСнСния массива Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°) ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° всСх способов с ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ ΠΈΡ… скорости ΠΈ удобства.

1. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ†ΠΈΠΊΠ» Для: основы ΠΈ Π½ΡŽΠ°Π½ΡΡ‹

Π¦ΠΈΠΊΠ» Для β€” самый ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ распространённый способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов Π² 1Π‘. Он ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² массивов (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ динамичСскиС) ΠΈ позволяСт Π³ΠΈΠ±ΠΊΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ процСссом ΠΎΠ±Ρ…ΠΎΠ΄Π°. Основной синтаксис:

Для ИндСкс = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π¦ΠΈΠΊΠ»

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Массив[ИндСкс];

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнта

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

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€” доступ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ индСксу элСмСнта, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив "Π½Π° Π»Π΅Ρ‚Ρƒ" ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с позициями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΠ±ΠΌΠ΅Π½Π° сосСдних элСмСнтов). Однако Π΅ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ:

  • πŸ”Ή Ошибка Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹: Ссли массив пуст (Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() = -1), Ρ†ΠΈΠΊΠ» Π½Π΅ выполнится Π½ΠΈ Ρ€Π°Π·Ρƒ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ явно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ это условиС.
  • πŸ”Ή ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ пропуску элСмСнтов ΠΈΠ»ΠΈ бСсконСчному Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ.
  • πŸ”Ή ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (10 000+ элСмСнтов) классичСский Для Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Для КаТдого.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ индСкса:

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

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

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

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

Для i = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ %1: %2", i, Массив[i]));

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСскими массивами (Новый Массив) ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСднюю Π·Π°Π½ΡΡ‚ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π° Π½Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. Для фиксированных массивов (Новый Массив(10)) ΠΎΠ½ Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ нСзависимо ΠΎΡ‚ заполнСнности.
πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Для i = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() По 0 Π¦ΠΈΠΊΠ» с шагом -1. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для удалСния элСмСнтов Π±Π΅Π· сдвига индСксов.

2. Π¦ΠΈΠΊΠ» Для КаТдого: простота vs ограничСния

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Для КаТдого появилась Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.2 ΠΈ стала Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΌ инструмСнтом ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² благодаря Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΠΌΡƒ синтаксису. Она автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π±Π΅Π· нСобходимости Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами:

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

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π­Π»Π΅ΠΌΠ΅Π½Ρ‚

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ“Œ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°: ΠΈΠ΄Π΅Π°Π»Π΅Π½ для простых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π³Π΄Π΅ индСкс Π½Π΅ Π²Π°ΠΆΠ΅Π½.
  • πŸ“Œ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: автоматичСски пропускаСт НСопрСдСлСно ΠΈ пустыС элСмСнты.
  • πŸ“Œ Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с массивами, Π½ΠΎ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ коллСкциями (БписокЗначСний, Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ).

Однако Ρƒ Для КаТдого Π΅ΡΡ‚ΡŒ критичСскиС ограничСния:

  1. НСвозмоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (присвоСниС Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = НовоСЗначСниС Π½Π΅ повлияСт Π½Π° массив).
  2. НСт доступа ΠΊ индСксу Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ…ΠΈΡ‰Ρ€Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, использования счётчика).
  3. МСдлСннСС Π½Π° 15-30% ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Для ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами (тСсты Π½Π° 100 000 элСмСнтов).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпустых строк:

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

Если НЕ ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Для КаТдого Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ исходный массив (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ элСмСнт), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ "ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°; опСрация пСрСчислСния ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°". Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ классичСский Для.
πŸ“Š Какой Ρ†ΠΈΠΊΠ» Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов Π² 1Π‘?
Для
Для КаТдого
Пока
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Найти, Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ)
НС знаю

3. Π¦ΠΈΠΊΠ» Пока: ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½

Π¦ΠΈΠΊΠ» Пока Ρ€Π΅ΠΆΠ΅ примСняСтся для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов, Π½ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Π² спСцифичСских сцСнариях:

  • πŸ”„ ΠžΠ±Ρ…ΠΎΠ΄ массива с условным ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совпадСния).
  • πŸ”„ Π Π°Π±ΠΎΡ‚Π° с нСстандартной Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° (шаг β‰  1, пропуск элСмСнтов).
  • πŸ”„ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массивов, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… измСняСтся динамичСски.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ шаблон:

ИндСкс = 0;

Пока ИндСкс <= Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π¦ΠΈΠΊΠ»

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Массив[ИндСкс];

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ИндСкс = ИндСкс + 1; // ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ шаг

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  1. Поиск ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа:
    ИндСкс = 0;
    

    Пока ИндСкс <= МассивЧисСл.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() И Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = НСопрСдСлСно Π¦ΠΈΠΊΠ»

    Если МассивЧисСл[ИндСкс] < 0 Π’ΠΎΠ³Π΄Π°

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = МассивЧисСл[ИндСкс];

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

    ИндСкс = ИндСкс + 1;

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

  2. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ с шагом 2 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ… индСксов):
    ИндСкс = 0;
    

    Пока ИндСкс <= Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π¦ΠΈΠΊΠ»

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Массив[ИндСкс]);

    ИндСкс = ИндСкс + 2;

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

Π“Π»Π°Π²Π½Ρ‹ΠΉ нСдостаток Ρ†ΠΈΠΊΠ»Π° Пока β€” риск зацикливания, Ссли Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ счётчик ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ условиС. ВсСгда провСряйтС Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ условия!

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ИндСкс Π² Ρ†ΠΈΠΊΠ»Π΅ Пока?

Π¦ΠΈΠΊΠ» станСт бСсконСчным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ условиС ИндСкс <= Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ пСрСстанСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ это ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ зависанию сСанса ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡƒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ (стандартноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” 300 сСкунд для сСрвСрных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²).

4. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: Найти(), Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(), Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ()

Начиная с вСрсии 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.10, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами, заимствованныС ΠΈΠ· соврСмСнных языков программирования. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ часто ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΊΠΎΠ΄Π° Π² 2-3 Ρ€Π°Π·Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ НазначСниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
Найти() Поиск ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Массив.Найти(Ѐункция(Π­Π») Π­Π» > 10) Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ НСопрСдСлСно
Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ() Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ элСмСнтов ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Массив.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(Ѐункция(Π­Π») НЕ ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Π­Π»)) Новый массив
Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ() ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Массив.Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ(Ѐункция(Π­Π») Π­Π» * 2) Новый массив
Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ() АгрСгация элСмСнтов (сумма, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚.Π΄.) Массив.Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ(Ѐункция(Акк, Π­Π») Акк + Π­Π»; 0) Π•Π΄ΠΈΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

  • πŸš€ Π›Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ: ΠΎΠ΄Π½Π° строка вмСсто 5-10 строк с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ.
  • πŸš€ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ случайно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ исходный массив.
  • πŸš€ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ: ΠΊΠΎΠ΄ описываСт Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π° Π½Π΅ ΠΊΠ°ΠΊ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

// 1. ΠžΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅ числа

// 2. ВозвСсти Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚

// 3. Найти сумму

Π‘ΡƒΠΌΠΌΠ°ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² = МассивЧисСл

.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(Ѐункция(Число) Число % 2 = 0)

.Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ(Ѐункция(Число) Число * Число)

.Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ(Ѐункция(Акк, Число) Акк + Число; 0);

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ массивов, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (100 000+ элСмСнтов). Для ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎ скорости ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ классичСскиС Ρ†ΠΈΠΊΠ»Ρ‹.
πŸ’‘

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

5. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… массивов ΠΈ слоТных структур

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° = Новый Массив;

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив(1, 2, 3));

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив(4, 5, 6));

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

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

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

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Массив структур (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, список Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с свойствами)

БписокВоваров = Новый Массив;

БписокВоваров.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НаимСнованиС,Π¦Π΅Π½Π°", "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€", 15000));

БписокВоваров.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НаимСнованиС,Π¦Π΅Π½Π°", "ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°", 2000));

Для КаТдого Π’ΠΎΠ²Π°Ρ€ Из БписокВоваров Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Π’ΠΎΠ²Π°Ρ€: %1, Π¦Π΅Π½Π°: %2", Π’ΠΎΠ²Π°Ρ€.НаимСнованиС, Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π°));

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

Для рСкурсивного ΠΎΠ±Ρ…ΠΎΠ΄Π° Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ самой сСбя:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ”Π΅Ρ€Π΅Π²ΠΎ(Π£Π·Π΅Π»)

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π£Π·Π΅Π».НаимСнованиС);

Если Π£Π·Π΅Π».Π”Π΅Ρ‚ΡΠΊΠΈΠ΅ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

Для КаТдого Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉΠ£Π·Π΅Π» Из Π£Π·Π΅Π».Π”Π΅Ρ‚ΡΠΊΠΈΠ΅ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦ΠΈΠΊΠ»

ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ”Π΅Ρ€Π΅Π²ΠΎ(Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉΠ£Π·Π΅Π»);

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

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ рСкурсивном ΠΎΠ±Ρ…ΠΎΠ΄Π΅ Π³Π»ΡƒΠ±ΠΈΠ½Π° влоТСнности ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° настройками ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” 500 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ). Для ΠΎΡ‡Π΅Π½ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… структур ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с стСком.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‚ΠΈΠΏ элСмСнтов (Массив? Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°? Π”Ρ€ΡƒΠ³ΠΎΠ΅?)

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ счётчики/аккумуляторы Π΄ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осмыслСнныС ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (Π½Π΅ просто Π­Π», Π° Π‘Ρ‚Ρ€ΠΎΠΊΠ°ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹)

ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для НСопрСдСлСно-->

6. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами (10 000+ элСмСнтов) Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния. НиТС β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстов Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.20 (1 000 000 элСмСнтов, простой ΠΎΠ±Ρ…ΠΎΠ΄ Π±Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ):

ΠœΠ΅Ρ‚ΠΎΠ΄ ВрСмя выполнСния (мс) ΠŸΠ°ΠΌΡΡ‚ΡŒ (ΠœΠ‘) ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
Для с индСксом 120 45 Π‘Π°ΠΌΡ‹ΠΉ быстрый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Для КаТдого 180 50 ΠŸΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 30-50%
Пока 150 48 Зависит ΠΎΡ‚ условия
Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ() 350 90 Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ копию массива

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • ⚑ Для простых ΠΎΠ±Ρ…ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Для с индСксом.
  • ⚑ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² β€” Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅.
  • ⚑ ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ свойства массива (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ()) ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ:
    Π“Ρ€Π°Π½ΠΈΡ†Π° = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ();
    

    Для i = 0 По Π“Ρ€Π°Π½ΠΈΡ†Π° Π¦ΠΈΠΊΠ» ...

  • ⚑ Для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ сначала примСняйтС Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ нюанс: ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, МассивЧисСл = Новый Массив(100000)) ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Новый Массив(Π Π°Π·ΠΌΠ΅Ρ€) ускоряСт Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² 2-3 Ρ€Π°Π·Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с динамичСским Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.

7. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами. Π’ΠΎΡ‚ самыС распространённыС:

  1. ИзмСнСниС массива Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°:
    Для КаТдого Π­Π» Из Массив Π¦ΠΈΠΊΠ»
    

    Если Π­Π» = "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ" Π’ΠΎΠ³Π΄Π°

    Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Π­Π»); // ΠžΠ¨Π˜Π‘ΠšΠ!

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

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

    βœ… РСшСниС: сначала собСритС индСксы для удалСния, Π·Π°Ρ‚Π΅ΠΌ удаляйтС Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

  2. ΠŸΡ€ΠΎΠΏΡƒΡΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° пустоту:
    Для i = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π¦ΠΈΠΊΠ» // ΠžΠ¨Π˜Π‘ΠšΠ, Ссли Массив пуст!
    

    ...

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

    βœ… РСшСниС: всСгда провСряйтС Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0.

  3. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с индСксами:
    Для i = 1 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π¦ΠΈΠΊΠ» // НачинаСт с 1, Π° Π½Π΅ 0!
    

    ...

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

    βœ… РСшСниС: ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ индСксация Π² 1Π‘ начинаСтся с 0.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° частая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². НапримСр:

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

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("100"); // Π‘Ρ‚Ρ€ΠΎΠΊΠ°!

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π­Π» + 50); // ΠžΠ¨Π˜Π‘ΠšΠ: нСльзя ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ строку ΠΈ число!

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

βœ… РСшСниС: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² (Число(Π­Π»)) ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ (Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π») = Π’ΠΈΠΏ("Число")).

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() для пустого массива?

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1 для пустого массива. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² условиях Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок Π²ΠΈΠ΄Π° "ИндСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† массива".

8. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Рассмотрим, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… бизнСс-Π·Π°Π΄Π°Ρ‡Π°Ρ… Π½Π° 1Π‘:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прайс-листа

Π—Π°Π΄Π°Ρ‡Π°: ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ Π½Π° 10% для всСх Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ "Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°".

Для КаТдого Π’ΠΎΠ²Π°Ρ€ Из ΠšΠ°Ρ‚Π°Π»ΠΎΠ³Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π¦ΠΈΠΊΠ»

Если Π’ΠΎΠ²Π°Ρ€.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ = "Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°" Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π° = Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π° * 1.1;

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Поиск Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π² массивС ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ²

Π—Π°Π΄Π°Ρ‡Π°: Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ИНН.

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

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

Если БписокИНН.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН) Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ ИНН %1: %2 ΠΈ %3",

ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН,

БписокИНН[ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН],

ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС));

Π˜Π½Π°Ρ‡Π΅

БписокИНН.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН, ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС);

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌ

Π—Π°Π΄Π°Ρ‡Π°: ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΈ.

Π˜Ρ‚ΠΎΠ³ΠΈΠŸΠΎΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ = Новый БоотвСтствиС;

Для КаТдого ΠŸΡ€ΠΎΠ΄Π°ΠΆΠ° Из ΠœΠ°ΡΡΠΈΠ²ΠŸΡ€ΠΎΠ΄Π°ΠΆ Π¦ΠΈΠΊΠ»

Если НЕ Π˜Ρ‚ΠΎΠ³ΠΈΠŸΠΎΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(ΠŸΡ€ΠΎΠ΄Π°ΠΆΠ°.ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€) Π’ΠΎΠ³Π΄Π°

Π˜Ρ‚ΠΎΠ³ΠΈΠŸΠΎΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠŸΡ€ΠΎΠ΄Π°ΠΆΠ°.ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, 0);

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

Π˜Ρ‚ΠΎΠ³ΠΈΠŸΠΎΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ[ΠŸΡ€ΠΎΠ΄Π°ΠΆΠ°.ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€] =

Π˜Ρ‚ΠΎΠ³ΠΈΠŸΠΎΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ[ΠŸΡ€ΠΎΠ΄Π°ΠΆΠ°.ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€] + ΠŸΡ€ΠΎΠ΄Π°ΠΆΠ°.Π‘ΡƒΠΌΠΌΠ°;

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

Π’ΠΎ всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° исходя ΠΈΠ· Π·Π°Π΄Π°Ρ‡ΠΈ. Для простых ΠΎΠ±Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Для КаТдого, для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… β€” Для с индСксом, для Π°Π½Π°Π»ΠΈΠ·Π° β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

FAQ: ЧастыС вопросы ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ массивов Π² 1Π‘

МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС Π±Π΅Π· создания ΠΊΠΎΠΏΠΈΠΈ?

Π”Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Для с шагом -1:

Для i = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() По 0 Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Массив[i]);

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

Π­Ρ‚ΠΎ Π½Π΅ создаёт копию массива ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Массив.ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ().

Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив, Ссли Π΅Π³ΠΎ элСмСнты β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Для КаТдого ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:

Для КаТдого ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Из ΠœΠ°ΡΡΠΈΠ²ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π¦ΠΈΠΊΠ»

ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ(); // Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

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

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС элСмСнты массива ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() ΠΈ Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ()?

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число элСмСнтов Π² массивС (начиная с 0), Π° Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() β€” индСкс послСднСго элСмСнта. НапримСр:

  • Для массива ΠΈΠ· 3 элСмСнтов: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 3, Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() = 2.
  • Для пустого массива: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0, Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ() = -1.
Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ массивом?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ классичСский Ρ†ΠΈΠΊΠ» Для с ΠΎΠ΄Π½ΠΈΠΌ индСксом:

Для i = 0 По Мин(Массив1.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ(), Массив2.Π’Π“Ρ€Π°Π½ΠΈΡ†Ρƒ()) Π¦ΠΈΠΊΠ»

Эл1 = Массив1[i];

Эл2 = Массив2[i];

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ°Ρ€Ρ‹ элСмСнтов

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

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ массивы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€!

МоТно Π»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массива досрочно?

Π”Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ:

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

Если Π­Π» = "Π‘Ρ‚ΠΎΠΏ" Π’ΠΎΠ³Π΄Π°

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π­Π»);

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

Для Ρ†ΠΈΠΊΠ»ΠΎΠ² Для ΠΈ Пока Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ (пропуск Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ).