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

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

1. ВстроСнная функция Min(): самый быстрый способ

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

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

  • πŸš€ Максимальная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” функция Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹
  • πŸ“ ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” ΠΎΠ΄Π½Π° строка вмСсто Ρ†ΠΈΠΊΠ»Π°
  • πŸ”„ Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ: числа, Π΄Π°Ρ‚Ρ‹, строки (ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования для массива чисСл:

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

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

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

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

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

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = МассивЧисСл.Min();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: " + ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 3

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Min() Π²Π΅Ρ€Π½Π΅Ρ‚ НСопрСдСлСно, Ссли массив пустой. ВсСгда провСряйтС Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок выполнСния.

Для массивов Π΄Π°Ρ‚ функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ:

ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚ = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ('2023-01-15');

ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ('2023-03-08');

ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ('2022-11-22');

БамаяРанняяДата = ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚.Min();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Бамая ранняя Π΄Π°Ρ‚Π°: " + Π€ΠΎΡ€ΠΌΠ°Ρ‚(БамаяРанняяДата, "Π”Π€=dd.MM.yyyy"));

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π’ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Min()
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта
Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

2. Π ΡƒΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов: ΠΊΠΎΠ³Π΄Π° Π±Π΅Π· Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ

Π₯отя встроСнная функция Min() ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сцСнариСв, Π±Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° трСбуСтся ручная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива. НапримСр, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ:

  • πŸ” Найти ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ условиями (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ Ρ‚.Π΄.)
  • πŸ“Š ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈΠ»ΠΈ массивы структур
  • πŸ”„ Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опСрациями Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ поиска выглядит Ρ‚Π°ΠΊ:

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

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

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

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

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

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив[0];

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

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ < ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ Π’ΠΎΠ³Π΄Π°

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚;

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ: " + ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ);

Для массивов структур ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² потрСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ для сравнСния:

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

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π¦Π΅Π½Π°,ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", 1500, 5));

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π¦Π΅Π½Π°,ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", 800, 2));

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π¦Π΅Π½Π°,ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", 1200, 3));

МинимальнаяЦСна = ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€[0].Π¦Π΅Π½Π°;

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

Если Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Π¦Π΅Π½Π° < МинимальнаяЦСна Π’ΠΎΠ³Π΄Π°

МинимальнаяЦСна = Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Π¦Π΅Π½Π°;

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами (10 000+ элСмСнтов) Ρ€ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Min(). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Массив Π½Π΅ пустой|Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹|Π£Ρ‡Ρ‚Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ НСопрСдСлСно|ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ доступ ΠΊ элСмСнтам массива-->

3. Поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ условиями

Часто трСбуСтся Π½Π°ΠΉΡ‚ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΎ всСм массивС, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ срСди элСмСнтов, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям. НапримСр:

  • πŸ’° Минимальная Ρ†Π΅Π½Π° срСди Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ
  • πŸ“… Бамая ранняя Π΄Π°Ρ‚Π° срСди Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°
  • πŸ“Š МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ срСди ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл

Рассмотрим практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиска минимальной Ρ†Π΅Π½Ρ‹ срСди Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ "Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°":

Π’ΠΎΠ²Π°Ρ€Ρ‹ = Новый Массив;

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ,Π¦Π΅Π½Π°", "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€", "Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°", 15000));

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ,Π¦Π΅Π½Π°", "ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°", "Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°", 2500));

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ,Π¦Π΅Π½Π°", "Π‘Ρ‚ΡƒΠ»", "МСбСль", 3500));

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ,Π¦Π΅Π½Π°", "ΠœΡ‹ΡˆΡŒ", "Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°", 1200));

МинимальнаяЦСна = НСопрСдСлСно;

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

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

Если МинимальнаяЦСна = НСопрСдСлСно Π˜Π›Π˜ Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π° < МинимальнаяЦСна Π’ΠΎΠ³Π΄Π°

МинимальнаяЦСна = Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π°;

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

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Минимальная Ρ†Π΅Π½Π° Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°: " + МинимальнаяЦСна);

Для числовых массивов с условиями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа):

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

Числа.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(15);

Числа.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(-3);

Числа.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(8);

Числа.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(-12);

Числа.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(22);

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… = НСопрСдСлСно;

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

Если Число > 0 Π’ΠΎΠ³Π΄Π°

Если ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… = НСопрСдСлСно Π˜Π›Π˜ Число < ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π’ΠΎΠ³Π΄Π°

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… = Число;

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

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

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

πŸ’‘

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

4. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов: ΠΌΠ΅Ρ‚ΠΎΠ΄ "раздСляй ΠΈ властвуй"

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

Один ΠΈΠ· эффСктивных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² β€” рСкурсивноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массива Π½Π° части с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ сравнСниСм ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠ² подмассивов. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° массив ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ отсортирован ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ структуру.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ рСкурсивного поиска ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°:

Ѐункция ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(Массив, Начало = 0, ΠšΠΎΠ½Π΅Ρ† = НСопрСдСлСно) Экспорт

Если ΠšΠΎΠ½Π΅Ρ† = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ΠšΠΎΠ½Π΅Ρ† = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°();

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

// Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ случай: ΠΎΠ΄ΠΈΠ½ элСмСнт

Если Начало = ΠšΠΎΠ½Π΅Ρ† Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Массив[Начало];

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

// Π”Π΅Π»ΠΈΠΌ массив ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ

Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° = Π¦Π΅Π»(Начало + (ΠšΠΎΠ½Π΅Ρ† - Начало) / 2);

// РСкурсивно Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡ‹ Π² Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ частях

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ›Π΅Π²Ρ‹ΠΉ = ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(Массив, Начало, Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°);

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΡ€Π°Π²Ρ‹ΠΉ = ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(Массив, Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° + 1, ΠšΠΎΠ½Π΅Ρ†);

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ мСньший ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠ²

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Min(ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ›Π΅Π²Ρ‹ΠΉ, ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΡ€Π°Π²Ρ‹ΠΉ);

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

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив;

Для Π‘Ρ‡ = 1 По 10000 Π¦ΠΈΠΊΠ»

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‡ * (Π‘Ρ‡ % 5 + 1)); // ЗаполняСм массива Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

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

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ²);

Для Π΅Ρ‰Π΅ большСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ (доступно Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.14+):

Ѐункция ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ(Массив) Экспорт

Если Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлСно;

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

Если Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 1 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Массив[0];

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

// Π”Π΅Π»ΠΈΠΌ массив Π½Π° части для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π§Π°ΡΡ‚ΡŒ1 = Массив.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(0, Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() / 2);

Π§Π°ΡΡ‚ΡŒ2 = Массив.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() / 2);

// ЗапускаСм ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ

Π—Π°Π΄Π°Ρ‡Π°1 = Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅Π—Π°Π΄Π°Ρ‡ΠΈ.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅Π—Π°Π΄Π°Ρ‡ΠΈ.НоваяЗадача("ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ", Π§Π°ΡΡ‚ΡŒ1));

Π—Π°Π΄Π°Ρ‡Π°2 = Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅Π—Π°Π΄Π°Ρ‡ΠΈ.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅Π—Π°Π΄Π°Ρ‡ΠΈ.НоваяЗадача("ΠΠ°ΠΉΡ‚ΠΈΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ", Π§Π°ΡΡ‚ΡŒ2));

// Π–Π΄Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚1 = Π—Π°Π΄Π°Ρ‡Π°1.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚();

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚2 = Π—Π°Π΄Π°Ρ‡Π°2.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚();

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Min(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚1, Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚2);

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (100 000+ элСмСнтов). Для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° созданиС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π²Π΅ΡΠΈΡ‚ΡŒ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.

5. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹: сортировка ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…

Иногда поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ сортировку ΠΈΠ»ΠΈ спСциализированныС структуры Π΄Π°Π½Π½Ρ‹Ρ…. Рассмотрим основныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° НСдостатки Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° + Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Высокая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n log n) Когда массив Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² любом случаС
ΠšΡƒΡ‡Π° (Heap) БыстроС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Для динамичСских Π΄Π°Π½Π½Ρ‹Ρ… с частым поиском ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°
Π”Π΅Ρ€Π΅Π²ΠΎ поиска Быстрый поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°/максимума ВысокиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Для слоТных структур Π΄Π°Π½Π½Ρ‹Ρ…
Π₯Сш-Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ О(1) доступ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ Для часто обновляСмых ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования сортировки для поиска ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°:

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

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

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

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

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

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ массив ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("ΠšΠ»ΡŽΡ‡, НаправлСниС", "Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π’ΠΎΠ·Ρ€");

Массив.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°);

// ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт отсортированного массива - ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив[0];

Для динамичСских Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ трСбуСтся ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуру "ΠΊΡƒΡ‡Π°" (heap). Π’ 1Π‘ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массива:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ’ΠšΡƒΡ‡Ρƒ(ΠšΡƒΡ‡Π°, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Экспорт

ΠšΡƒΡ‡Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

ИндСкс = ΠšΡƒΡ‡Π°.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°();

Пока ИндСкс > 0 И ΠšΡƒΡ‡Π°[ИндСкс] < ΠšΡƒΡ‡Π°[Π¦Π΅Π»((ИндСкс - 1)/2)] Π¦ΠΈΠΊΠ»

ОбмСн = ΠšΡƒΡ‡Π°[Π¦Π΅Π»((ИндСкс - 1)/2)];

ΠšΡƒΡ‡Π°[Π¦Π΅Π»((ИндСкс - 1)/2)] = ΠšΡƒΡ‡Π°[ИндСкс];

ΠšΡƒΡ‡Π°[ИндСкс] = ОбмСн;

ИндСкс = ЦСл((ИндСкс - 1)/2);

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

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

Ѐункция ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ˜Π·ΠšΡƒΡ‡ΠΈ(ΠšΡƒΡ‡Π°) Экспорт

Если ΠšΡƒΡ‡Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлСно;

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

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = ΠšΡƒΡ‡Π°[0];

ΠšΡƒΡ‡Π°[0] = ΠšΡƒΡ‡Π°[ΠšΡƒΡ‡Π°.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°()];

ΠšΡƒΡ‡Π°.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ΠšΡƒΡ‡Π°.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°());

// ВосстанавливаСм свойство ΠΊΡƒΡ‡ΠΈ

ИндСкс = 0;

Пока Π˜ΡΡ‚ΠΈΠ½Π° Π¦ΠΈΠΊΠ»

НаимСньший = ИндСкс;

Π›Π΅Π²Ρ‹ΠΉ = 2 * ИндСкс + 1;

ΠŸΡ€Π°Π²Ρ‹ΠΉ = 2 * ИндСкс + 2;

Если Π›Π΅Π²Ρ‹ΠΉ < ΠšΡƒΡ‡Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() И ΠšΡƒΡ‡Π°[Π›Π΅Π²Ρ‹ΠΉ] < ΠšΡƒΡ‡Π°[НаимСньший] Π’ΠΎΠ³Π΄Π°

НаимСньший = Π›Π΅Π²Ρ‹ΠΉ;

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

Если ΠŸΡ€Π°Π²Ρ‹ΠΉ < ΠšΡƒΡ‡Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() И ΠšΡƒΡ‡Π°[ΠŸΡ€Π°Π²Ρ‹ΠΉ] < ΠšΡƒΡ‡Π°[НаимСньший] Π’ΠΎΠ³Π΄Π°

НаимСньший = ΠŸΡ€Π°Π²Ρ‹ΠΉ;

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

Если НаимСньший = ИндСкс Π’ΠΎΠ³Π΄Π°

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

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

ОбмСн = ΠšΡƒΡ‡Π°[ИндСкс];

ΠšΡƒΡ‡Π°[ИндСкс] = ΠšΡƒΡ‡Π°[НаимСньший];

ΠšΡƒΡ‡Π°[НаимСньший] = ОбмСн;

ИндСкс = НаимСньший;

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ;

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

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

Π”Π°ΠΆΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΉ простой Π·Π°Π΄Π°Ρ‡Π΅ ΠΊΠ°ΠΊ поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‚ ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΈΠ»ΠΈ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

1. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ пустых массивов

МногиС Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ массив Π½Π΅ пустой ΠΏΠ΅Ρ€Π΅Π΄ поиском ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам выполнСния:

// ΠŸΠ»ΠΎΡ…ΠΎ: Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° пустоту

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив.Min(); // Ошибка, Ссли массив пустой

// Π₯ΠΎΡ€ΠΎΡˆΠΎ: с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ

Если Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив.Min();

Π˜Π½Π°Ρ‡Π΅

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = НСопрСдСлСно; // ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

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

2. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ поискС ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π² массивС со ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (числа ΠΈ строки) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ:

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

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

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

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

// Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ числа ΠΈ строки ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив.Min(); // Π’Π΅Ρ€Π½Π΅Ρ‚ "10" (строка), Π° Π½Π΅ 8

3. НСэффСктивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…

ИспользованиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов:

// ΠŸΠ»ΠΎΡ…ΠΎ: O(n^2) вмСсто O(n)

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

Π―Π²Π»ΡΠ΅Ρ‚ΡΡΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ = Π˜ΡΡ‚ΠΈΠ½Π°;

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

Если Массив[j] < Массив[i] Π’ΠΎΠ³Π΄Π°

Π―Π²Π»ΡΠ΅Ρ‚ΡΡΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ = Π›ΠΎΠΆΡŒ;

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

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

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

Если Π―Π²Π»ΡΠ΅Ρ‚ΡΡΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ Π’ΠΎΠ³Π΄Π°

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив[i];

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

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

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

4. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ массива Π²ΠΎ врСмя поиска

ИзмСнСниС массива Π² процСссС поиска ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ:

// Опасно: модификация массива Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

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

Если УсловиС(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚); // Π­Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ!

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

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

5. НСучСт особСнностСй Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

Π Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НапримСр, для Π΄Π°Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” самая ранняя Π΄Π°Ρ‚Π°, Π° для строк β€” пСрвая Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС:

Π”Π°Ρ‚Π°1 = '2023-01-15';

Π”Π°Ρ‚Π°2 = '2023-03-08';

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Min(Π”Π°Ρ‚Π°1, Π”Π°Ρ‚Π°2); // Π’Π΅Ρ€Π½Π΅Ρ‚ '2023-01-15' (Ρ€Π°Π½ΡŒΡˆΠ΅)

Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 = "АпСльсин";

Π‘Ρ‚Ρ€ΠΎΠΊΠ°2 = "Π―Π±Π»ΠΎΠΊΠΎ";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Min(Π‘Ρ‚Ρ€ΠΎΠΊΠ°1, Π‘Ρ‚Ρ€ΠΎΠΊΠ°2); // Π’Π΅Ρ€Π½Π΅Ρ‚ "АпСльсин" (пСрвая Π±ΡƒΠΊΠ²Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅)

πŸ’‘

ВсСгда провСряйтС массив Π½Π° пустоту ΠΏΠ΅Ρ€Π΅Π΄ поиском ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов ΠΎΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Min() ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ.

7. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ сцСнарии, Π³Π΄Π΅ поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π² массивС 1Π‘ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ бизнСс-Π·Π°Π΄Π°Ρ‡ΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Поиск минимальной Ρ†Π΅Π½Ρ‹ срСди Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| НомСнклатура.НаимСнованиС КАК НаимСнованиС,

| ЦСныНомСнклатуры.Π¦Π΅Π½Π° КАК Π¦Π΅Π½Π°

|Π˜Π—

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура

| Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• РСгистрБвСдСний.ЦСныНомСнклатуры КАК ЦСныНомСнклатуры

| ПО НомСнклатура.Бсылка = ЦСныНомСнклатуры.НомСнклатура

|Π“Π”Π•

| НомСнклатура.Π­Ρ‚ΠΎΠ“Ρ€ΡƒΠΏΠΏΠ° = Π›ΠžΠ–Π¬";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ° = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

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

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

МассивЦСн.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π¦Π΅Π½Π°);

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

МинимальнаяЦСна = МассивЦСн.Min();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Минимальная Ρ†Π΅Π½Π° Π² справочникС: " + МинимальнаяЦСна);

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

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° КАК Π”Π°Ρ‚Π°

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚ = Новый Массив;

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π”Π°Ρ‚Π°);

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

БамаяРанняяДата = ΠœΠ°ΡΡΠΈΠ²Π”Π°Ρ‚.Min();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Π°ΠΌΡ‹ΠΉ Ρ€Π°Π½Π½ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚: " + Π€ΠΎΡ€ΠΌΠ°Ρ‚(БамаяРанняяДата, "Π”Π€=dd.MM.yyyy"));

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ остатков Π½Π° складС

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ остатки ΠΏΠΎ складам

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠ’ΠΎΠ²Π°Ρ€ΠΎΠ².Π‘ΠΊΠ»Π°Π΄ КАК Π‘ΠΊΠ»Π°Π΄,

| БУММА(ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠ’ΠΎΠ²Π°Ρ€ΠΎΠ².ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΡΡ‚Π°Ρ‚ΠΎΠΊ) КАК ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ

|Π˜Π—

| РСгистрНакоплСния.ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠ’ΠΎΠ²Π°Ρ€ΠΎΠ² КАК ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠ’ΠΎΠ²Π°Ρ€ΠΎΠ²

|Π‘Π“Π Π£ΠŸΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ ПО

| ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠ’ΠΎΠ²Π°Ρ€ΠΎΠ².Π‘ΠΊΠ»Π°Π΄";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

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

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²ΠžΡΡ‚Π°Ρ‚ΠΊΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ);

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

// Находим склад с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ остатком

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΠžΡΡ‚Π°Ρ‚ΠΎΠΊ = ΠœΠ°ΡΡΠΈΠ²ΠžΡΡ‚Π°Ρ‚ΠΊΠΎΠ².Min();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ остаток Π½Π° складах: " + ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΠžΡΡ‚Π°Ρ‚ΠΎΠΊ);

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: Анализ ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°ΠΌ

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ… ΠΏΠΎ мСсяцам

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| Π’Π«Π ΠΠ—Π˜Π’Π¬(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг.Π”Π°Ρ‚Π° КАК Π”Π°Ρ‚Π°) КАК ΠœΠ΅ΡΡΡ†,

| БУММА(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг.Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) КАК Π‘ΡƒΠΌΠΌΠ°

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

|Π‘Π“Π Π£ΠŸΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ ПО

| Π’Π«Π ΠΠ—Π˜Π’Π¬(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг.Π”Π°Ρ‚Π° КАК Π”Π°Ρ‚Π°)";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

ΠœΠ°ΡΡΠΈΠ²Π‘ΡƒΠΌΠΌ = Новый Массив;

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π‘ΡƒΠΌΠΌ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘ΡƒΠΌΠΌΠ°);

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

// Находим мСсяц с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌΠΈ

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ = ΠœΠ°ΡΡΠΈΠ²Π‘ΡƒΠΌΠΌ.Min();

FAQ: ЧастыС вопросы ΠΏΠΎ поиску ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π² 1Π‘

Как Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС?

Для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив;

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив(15, 3, 8));

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив(22, 5, 11));

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив(7, 19, 4));

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²[0][0];

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

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

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ < ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ Π’ΠΎΠ³Π΄Π°

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚;

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

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

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

МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² массивС Π±Π΅Π· Ρ†ΠΈΠΊΠ»Π°?

Π”Π°, для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° встроСнная функция Min(). Она Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· явного Ρ†ΠΈΠΊΠ»Π° Π² ΠΊΠΎΠ΄Π΅, хотя Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Массив = Новый Массив(15, 3, 8, 22);

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив.Min(); // 3

Как Π½Π°ΠΉΡ‚ΠΈ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ?

НуТно сначала ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΈ Π²Π·ΡΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт:

Π¦Π΅Π½Ρ‹ = Новый Массив(1500, 800, 1200, 2500, 800);

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("ΠšΠ»ΡŽΡ‡, НаправлСниС", "Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π’ΠΎΠ·Ρ€");

Π¦Π΅Π½Ρ‹.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°);

// Π£Π±ΠΈΡ€Π°Π΅ΠΌ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ минимального значСния

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π¦Π΅Π½Ρ‹ = Новый Массив;

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = НСопрСдСлСно;

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

Если Π¦Π΅Π½Π° <> ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π¦Π΅Π½Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π¦Π΅Π½Π°);

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π¦Π΅Π½Π°;

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

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

Если Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π¦Π΅Π½Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() >= 2 Π’ΠΎΠ³Π΄Π°

Π’Ρ‚ΠΎΡ€Π°ΡΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ = Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π¦Π΅Π½Ρ‹[1];

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ функция Min() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для строк?

Ѐункция Min() для строк сравниваСт ΠΈΡ… Π² лСксикографичСском порядкС (посимвольно ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Unicode), Π° Π½Π΅ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅. НапримСр:

Массив = Новый Массив("100", "20", "3");

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = Массив.Min(); // Π’Π΅Ρ€Π½Π΅Ρ‚ "100" (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ '1' мСньшС '2' ΠΈ '3')

Если Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ строки ΠΊΠ°ΠΊ числа, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² числовой Ρ‚ΠΈΠΏ:

ЧисловыСЗначСния = Новый Массив;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Массив Π¦ΠΈΠΊΠ»

ЧисловыСЗначСния.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Число(Π‘Ρ‚Ρ€ΠΎΠΊΠ°));

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

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ = ЧисловыСЗначСния.Min(); // 3

Как Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² массивС структур ΠΏΠΎ нСскольким полям?

НуТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ сравнСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска Ρ‚ΠΎΠ²Π°Ρ€Π° с минимальной Ρ†Π΅Π½ΠΎΠΉ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… минимального остатка:

Π’ΠΎΠ²Π°Ρ€Ρ‹ = Новый Массив;

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,Π¦Π΅Π½Π°,ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ", "Π’ΠΎΠ²Π°Ρ€1", 1500, 10));

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,Π¦Π΅Π½Π°,ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ", "Π’ΠΎΠ²Π°Ρ€2", 800, 5));

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НазваниС,Π¦Π΅Π½Π°,ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ", "Π’ΠΎΠ²Π°Ρ€3", 1200, 3));

// Находим ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ остаток

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΠžΡΡ‚Π°Ρ‚ΠΎΠΊ = Π’ΠΎΠ²Π°Ρ€Ρ‹[0].ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ;

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

Если Π’ΠΎΠ²Π°Ρ€.ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ < ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΠžΡΡ‚Π°Ρ‚ΠΎΠΊ Π’ΠΎΠ³Π΄Π°

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΠžΡΡ‚Π°Ρ‚ΠΎΠΊ = Π’ΠΎΠ²Π°Ρ€.ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ;

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

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

// Π‘Ρ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ остатком ΠΈΡ‰Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ

МинимальнаяЦСна = НСопрСдСлСно;

Для КаТдого Π’ΠΎΠ²Π°Ρ€ Из