Π Π°Π±ΠΎΡ‚Π° с массивами β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых частых Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3

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

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

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

1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€: Ρ†ΠΈΠΊΠ» Для КаТдого

НаиболСС распространСнный ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный способ β€” использованиС конструкции Для КаТдого ... Из ... Π¦ΠΈΠΊΠ». Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС элСмСнты массива Π±Π΅Π· привязки ΠΊ ΠΈΡ… индСксам.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства:

  • πŸ“Œ ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° чтСния β€” ΠΊΠΎΠ΄ выглядит СстСствСнно ΠΈ понятно Π΄Π°ΠΆΠ΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ
  • πŸ”„ АвтоматичСская итСрация β€” Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ счСтчиком
  • πŸ›‘οΈ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива строк:

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

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

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

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

// ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π€Ρ€ΡƒΠΊΡ‚: " + Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Для КаТдого с массивами Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) пСрСмСнная Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ содСрТит копию значСния, Π° Π½Π΅ ссылку. ИзмСнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡŽΡ‚ Π½Π° исходный массив.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, справочниками) этот нюанс становится ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ:

ΠœΠ°ΡΡΠΈΠ²Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚());

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

Π”ΠΎΠΊ.Π”Π°Ρ‚Π° = ВСкущаяДата(); // Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚!

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

πŸ’‘

Если Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (числа, строки), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксный доступ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ() вмСсто Ρ†ΠΈΠΊΠ»Π° Для КаТдого

2. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΏΠΎ индСксу: Ρ†ΠΈΠΊΠ» Пока

Когда трСбуСтся Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами элСмСнтов, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Ρ†ΠΈΠΊΠ» Пока с Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ счСтчиком. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ для:

  • πŸ”’ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ элСмСнтов Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС
  • 🎯 Доступа ΠΊ сосСним элСмСнтам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сравнСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ)
  • ⚑ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² критичСских участках ΠΊΠΎΠ΄Π°

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ шаблон ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊ послСднСму элСмСнту:

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

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

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

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

ИндСкс = 0;

Пока ИндСкс < МассивЧисСл.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π¦ΠΈΠΊΠ»

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ = МассивЧисСл[ИндСкс];

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ [" + ИндСкс + "]: " + Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ условия:

ИндСкс = МассивЧисСл.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1;

Пока ИндСкс >= 0 Цикл

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ с ΠΊΠΎΠ½Ρ†Π°: " + МассивЧисСл[ИндСкс]);

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСски измСняСмыми массивами (Π³Π΄Π΅ количСство элСмСнтов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°) всСгда ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок:
ΠšΠΎΠ»Π²ΠΎΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ();

ИндСкс = 0;

Пока ИндСкс < ΠšΠΎΠ»Π²ΠΎΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π¦ΠΈΠΊΠ»

// ...

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

πŸ“Š Какой Ρ†ΠΈΠΊΠ» Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов?
Для КаТдого
Пока с индСксом
Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
НС знаю

3. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ() ΠΈ Найти()

Π‘ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ появились ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ массивы Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ стилС. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для:

  • 🧹 Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ элСмСнтов ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
  • πŸ”„ Врансформации Π΄Π°Π½Π½Ρ‹Ρ… (map)
  • πŸ” Поиска ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… элСмСнтов

ΠœΠ΅Ρ‚ΠΎΠ΄ Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ примСняСт Π΅Π³ΠΎ ΠΊΠΎ всСм элСмСнтам:

МассивЦСн = Новый Массив;

МассивЦСн.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(100);

МассивЦСн.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(250);

МассивЦСн.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(150);

// Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ всС Ρ†Π΅Π½Ρ‹ Π½Π° 10%

МассивЦСн.Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ(Ѐункция(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ * 1.1;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ);

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: [110, 275, 165]

Для поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ подходящСго элСмСнта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Найти():

ΠŸΠ΅Ρ€Π²Π°ΡΠ¦Π΅Π½Π°Π‘ΠΎΠ»ΡŒΡˆΠ΅200 = МассивЦСн.Найти(Ѐункция(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ > 200;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ);

// Π’Π΅Ρ€Π½Π΅Ρ‚ 275 (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт > 200)

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС Ρ€ΡƒΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Однако ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ вСрсии 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.14+.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹?

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню 1Π‘, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "Π‘ΠΏΡ€Π°Π²ΠΊΠ°" β†’ "О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅". Π’ ΠΎΠΊΠ½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π° тСкущая вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ 8.3.X.X

4. Π Π°Π±ΠΎΡ‚Π° с ассоциативными массивами (Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, БоотвСтствиС)

Когда Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€ "ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅" (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ БоотвСтствиС), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов Π½Π΅ подходят. Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹.

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ:

Π”Π°Π½Π½Ρ‹Π΅ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

Π”Π°Π½Π½Ρ‹Π΅ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Имя", "Иванов");

Π”Π°Π½Π½Ρ‹Π΅ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Баланс", 15000);

Π”Π°Π½Π½Ρ‹Π΅ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Бтатус", "VIP");

// ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ всСх ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Для КаТдого ΠšΠ»ΡŽΡ‡ Из Π”Π°Π½Π½Ρ‹Π΅ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΠ»ΡŽΡ‡: " + ΠšΠ»ΡŽΡ‡ + ", Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: " + Π”Π°Π½Π½Ρ‹Π΅ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°[ΠšΠ»ΡŽΡ‡]);

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

Для БоотвСтствиС (Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ) синтаксис Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½, Π½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ особСнности сравнСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ² = Новый БоотвСтствиС;

Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€"), 12000);

Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°"), 1200);

// БСзопасный ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° ΠΊΠ»ΡŽΡ‡Π°

Для КаТдого ΠšΠ»ΡŽΡ‡ Из Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π¦ΠΈΠΊΠ»

Если Π’ΠΈΠΏΠ—Π½Ρ‡(ΠšΠ»ΡŽΡ‡) = Π’ΠΈΠΏ("БправочникБсылка.НомСнклатура") Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π’ΠΎΠ²Π°Ρ€: " + ΠšΠ»ΡŽΡ‡.НаимСнованиС + ", Π¦Π΅Π½Π°: " + Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ²[ΠšΠ»ΡŽΡ‡]);

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ БоотвСтствия Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ошибки. Π›ΡƒΡ‡ΡˆΠ΅ сначала ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ измСнСния Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ массивС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ….

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

Когда массив содСрТит тысячи элСмСнтов, нСэффСктивный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (10 000 элСмСнтов) ΠŸΠ°ΠΌΡΡ‚ΡŒ Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Для КаТдого ~150 мс Низкая ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ
Пока с индСксом ~120 мс Низкая НуТна Ρ€Π°Π±ΠΎΡ‚Π° с индСксами, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок
Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ() ~90 мс БрСдняя Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, трансформация Π΄Π°Π½Π½Ρ‹Ρ…
Ручная Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ° Ρ†ΠΈΠΊΠ»Π° ~80 мс Минимальная ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ участки

Для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах:

  1. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² β€” квадратичная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ (O(nΒ²)) ΡƒΠ±ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
  2. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° β€” выноситС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹Π΅ вычислСния Π½Π°Ρ€ΡƒΠΆΡƒ
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ вмСсто Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Если для пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ массива:

// НЕэффСктивно (Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ условиС)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Бвойство = "НуТноСЗначСниС" Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

// Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Бвойство <> "НуТноСЗначСниС" Π’ΠΎΠ³Π΄Π°

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ;

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

ВынСсСны всС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹Π΅ вычислСния Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°|ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°|Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстрыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ|ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° тСстовая Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…-->

6. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: рСкурсия ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

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

РСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… массивов:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒΠ’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²(Массив)

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

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Массив") Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒΠ’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚); // РСкурсивный Π²Ρ‹Π·ΠΎΠ²

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НайдСн элСмСнт: " + Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

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

ИспользованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (1Π‘ 8.3.16+):

Ѐункция ГСнСраторЧисСлЀибоначчи(ΠŸΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

Π° = 1; b = 1;

Пока Π° <= ΠŸΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π¦ΠΈΠΊΠ»

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π°;

[Π°, b] = [b, Π° + b];

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

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

// ИспользованиС

Для КаТдого Число Из Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π§ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ(1000) Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Число);

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

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для:

  • πŸ“Š ΠŸΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π΅Π· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ
  • πŸ”’ Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ "Π½Π° Π»Π΅Ρ‚Ρƒ"
  • πŸ”„ Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (pipeline)
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: РСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π² 1Π‘ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ стСка (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ~1000 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ). Для Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ с явным ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ стСком.

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

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

1. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ массива Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°

// ΠžΠ¨Π˜Π‘ΠšΠ: Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ элСмСнт послС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ

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

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

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚); // ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ!

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

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

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

УдаляСмыС = Новый Массив;

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

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

УдаляСмыС.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из УдаляСмыС Π¦ΠΈΠΊΠ»

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

2. НСучСт пустых элСмСнтов

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ НСопрСдСлСно ΠΈΠ»ΠΈ NULL. ВсСгда провСряйтС:

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ;

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

3. ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° с индСксациСй

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ индСксация Π² 1Π‘ начинаСтся с 0, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΈΠ»ΠΈ -1:

ИндСкс = Массив.Найти(Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚);

Если ИндСкс <> -1 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НайдСн Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ: " + ИндСкс);

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

πŸ’‘

ВсСгда провСряйтС Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ условия: пустыС массивы, массивы с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом, массивы с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями. ВСстируйтС ΠΊΠΎΠ΄ Π½Π° Ρ‚Π°ΠΊΠΈΡ… случаях ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

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

Рассмотрим нСсколько Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… бизнСс-Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массивов ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ остаткам Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ = Новый Массив;

// ... Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· рСгистра остатков

// Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ складам

Π‘ΠΊΠ»Π°Π΄Ρ‹ = Новый БоотвСтствиС;

Для КаТдого Π—Π°ΠΏΠΈΡΡŒ Из ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ Π¦ΠΈΠΊΠ»

Если НЕ Π‘ΠΊΠ»Π°Π΄Ρ‹.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(Π—Π°ΠΏΠΈΡΡŒ.Π‘ΠΊΠ»Π°Π΄) Π’ΠΎΠ³Π΄Π°

Π‘ΠΊΠ»Π°Π΄Ρ‹.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π—Π°ΠΏΠΈΡΡŒ.Π‘ΠΊΠ»Π°Π΄, Новый Массив);

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

Π‘ΠΊΠ»Π°Π΄Ρ‹[Π—Π°ΠΏΠΈΡΡŒ.Π‘ΠΊΠ»Π°Π΄].Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π°ΠΏΠΈΡΡŒ);

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Валидация Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ записью

ДокумСнтыДляЗаписи = ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠ‘ΠΏΠΈΡΠΎΠΊΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²();

Ошибки = Новый Массив;

Для КаТдого Π”ΠΎΠΊ Из ДокумСнтыДляЗаписи Π¦ΠΈΠΊΠ»

Если НЕ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π”ΠΎΠΊ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚) Π’ΠΎΠ³Π΄Π°

Ошибки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ " + Π”ΠΎΠΊ.НомСр + ": Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚");

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

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

Если Ошибки.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(Ошибки, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ));

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Поиск Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π² справочникС

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ = Новый БоотвСтствиС;

Пока Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠšΠ»ΡŽΡ‡ = ?(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.НаимСнованиС = "", "ПУБВО", Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.НаимСнованиС);

Если Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(ΠšΠ»ΡŽΡ‡) Π’ΠΎΠ³Π΄Π°

Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹[ΠšΠ»ΡŽΡ‡].Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.Бсылка);

Π˜Π½Π°Ρ‡Π΅

Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠšΠ»ΡŽΡ‡, Новый Массив(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.Бсылка));

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

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

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

πŸ’‘

Π’ 80% случаСв достаточно Ρ†ΠΈΠΊΠ»Π° Для КаТдого. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ профилирования.

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

Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив Π² 1Π‘ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Пока с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ индСкса:

ИндСкс = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1;

Пока ИндСкс >= 0 Цикл

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

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

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

Для массивов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² это бСзопаснСС, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт Π½ΠΎΠ²ΡƒΡŽ копию.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ break Π² Ρ†ΠΈΠΊΠ»Π°Ρ… 1Π‘?

Π’ 1Π‘ Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈ:

  • ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ β€” для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°
  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ β€” для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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

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

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ; // Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

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

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

Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ элСмСнты?

Для массивов ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (числа, строки) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксный доступ:

Для ИндСкс = 0 По Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¦ΠΈΠΊΠ»

Массив[ИндСкс] = Массив[ИндСкс] * 2; // Π£Π΄Π²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт

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

Для массивов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² измСнСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Бвойство = "НовоСЗначСниС"; // Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

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

Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° самый быстрый для 100 000 элСмСнтов?

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ тСстов Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 8.3.20:

  1. Ручная Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ° Ρ†ΠΈΠΊΠ»Π° с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ .ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() β€” ~0.5 сСк
  2. ΠœΠ΅Ρ‚ΠΎΠ΄ Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ() β€” ~0.7 сСк
  3. Π¦ΠΈΠΊΠ» Пока с индСксом β€” ~0.8 сСк
  4. Π¦ΠΈΠΊΠ» Для КаТдого β€” ~1.2 сСк

Π Π°Π·Π½ΠΈΡ†Π° становится Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ() ΠΊΠ°ΠΊ баланс скорости ΠΈ читаСмости.

Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс элСмСнта?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Пока с Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ счСтчиком:

ИндСкс = 0;

Пока ИндСкс < Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π¦ΠΈΠΊΠ»

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ИндСкс: " + ИндСкс + ", Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: " + Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

Или для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3.18+ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ() с колбэком:

Массив.ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ(ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ИндСкс, Массив)

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ %1: %2", ИндСкс, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚));

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