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

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ сортировки массива с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ²

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

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΠΌ потрСбуСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() самого массива. Π’ Ρ†ΠΈΠΊΠ»Π΅ удалСния ΠΌΡ‹ сравниваСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ, ΠΈ Ссли ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹ β€” удаляСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ.

Однако Ρƒ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ сущСствСнный нюанс: ΠΎΠ½ измСняСт исходный порядок элСмСнтов. Если ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° для бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, хронология событий), этот способ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сохранСния индСксов. Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ опСрация сортировки ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(N log N), Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах.

  • πŸš€ Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… послС сортировки.
  • πŸ”„ Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ исходный порядок слСдования элСмСнтов Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  • πŸ›  Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° с ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ индСксом для бСзопасного удалСния.
  • πŸ“‰ НС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ссли элСмСнты массива Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ прямоС сравнСниС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов ΠΈΠ· массива Π² Ρ†ΠΈΠΊΠ»Π΅ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ (ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ) ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ индСкс, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ рискуСтС ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнтов ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива.

πŸ’‘

ΠŸΡ€ΠΈ сортировкС строк ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ локаль систСмы. Для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с явным ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сравнСния.

ИспользованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° БоотвСтствиС (Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Π°)

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

Если элСмСнт ΡƒΠΆΠ΅ сущСствуСт Π² качСствС ΠΊΠ»ΡŽΡ‡Π°, опСрация добавлСния просто Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ (ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡Π°). ПослС заполнСния соотвСтствия ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ всС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ массив. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сохраняСт порядок ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния элСмСнтов, Ρ‡Ρ‚ΠΎ часто являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ сортировки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ быстрый доступ ΠΊ элСмСнтам. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° приблиТаСтся ΠΊ O(N). Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со слоТными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π³Π΄Π΅ сравнСниС Β«Ρ€Π°Π²Π½ΠΎΒ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ сортировка Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½Π° ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.

Ѐункция Π£Π΄Π°Π»ΠΈΡ‚ΡŒΠ”ΡƒΠ±Π»ΠΈΠ§Π΅Ρ€Π΅Π·Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²)

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ΠšΠ»ΡŽΡ‡ΠΈ = Новый БоотвСтствиС;

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Ρ‚ ΠΈΠ· Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

// ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡. Если ΠΊΠ»ΡŽΡ‡ Π΅ΡΡ‚ΡŒ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚

Если НС Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ΠšΠ»ΡŽΡ‡ΠΈ.Бвойство(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ³Π΄Π°

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ΠšΠ»ΡŽΡ‡ΠΈ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π˜ΡΡ‚ΠΈΠ½Π°);

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

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Новый Массив(Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ΠšΠ»ΡŽΡ‡ΠΈ.ΠšΠ»ΡŽΡ‡ΠΈ());

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

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСт Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π° Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Ρ€ΡƒΡŽ Β«Π½Π° мСстС». Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ плюсом (Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ исходных Π΄Π°Π½Π½Ρ‹Ρ…), Ρ‚Π°ΠΊ ΠΈ минусом (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π½Π° созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°). Для массивов Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния Π΄ΡƒΠ±Π»Π΅ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» с поиском (Найти)
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° + Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
БоотвСтствиС (Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Π°)
Запрос ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ запрос

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

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ массива Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π ΠΠ—Π›Π˜Π§ΠΠ«Π• (ΠΈΠ»ΠΈ GROUP BY). Π­Ρ‚ΠΎ позволяСт Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… самой ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ максимально эффСктивным способом. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½, Ссли Π΄Π°Π½Π½Ρ‹Π΅ массива ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΈΠ· Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ готовятся для записи Π² Π½Π΅Π΅.

ОсновноС прСимущСство β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ дальнСйшСй слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… срСдствами языка запросов Π±Π΅Π· Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² контСкст сСрвСра. Однако здСсь Π΅ΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° созданиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… массивов (Π΄ΠΎ 1000 элСмСнтов) этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ·-Π·Π° ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄Π° Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ запроса.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ порядка ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° O(N log N) НСт НизкоС
БоотвСтствиС O(N) Π”Π° Π‘Ρ€Π΅Π΄Π½Π΅Π΅
Запрос (Π’Π’) Зависит ΠΎΡ‚ Π‘Π£Π‘Π” НСт (Π±Π΅Π· ORDER BY) ВысокоС
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» O(N^2) Π”Π° МинимальноС

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΠ°ΠΌ Π² массивС. НСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ошибкам выполнСния запроса.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ запрос ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π° ΠΌΠ°Π»Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…?

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Запрос, компиляция тСкста запроса ΠΈ созданиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ фиксированноС врСмя. На ΠΌΠ°Π»Ρ‹Ρ… массивах это врСмя ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ врСмя простого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π² Ρ†ΠΈΠΊΠ»Π΅.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° удалСния Π΄ΡƒΠ±Π»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»ΠΈΠ½Π³Π΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НС сущСствуСт «сСрСбряной ΠΏΡƒΠ»ΠΈΒ», которая Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π²ΠΎ всСх сцСнариях. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° критичСски Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²Π΅Π΄Π΅Ρ‚ сСбя систСма ΠΏΡ€ΠΈ ростС количСства элСмСнтов.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² (ΠΊΠΎΠ³Π΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ массивС Ρ‡Π΅Ρ€Π΅Π· Найти) являСтся самым простым Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ самым ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ. Π•Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Π° β€” O(N^2). ΠŸΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ массива Π² 10 Ρ€Π°Π· врСмя выполнСния вырастСт Π² 100 Ρ€Π°Π·. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ допустим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для списков Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 100-200 элСмСнтов.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, использованиС БоотвСтствия дСмонстрируСт Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ количСства элСмСнтов. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Однако, Ссли элСмСнты массива ΡΠ²Π»ΡΡŽΡ‚ΡΡ слоТными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ сравнСниСм, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ…ΡΡˆ-функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

πŸ’‘

Для массивов Π΄ΠΎ 500 элСмСнтов ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой ΠΌΠ΅Ρ‚ΠΎΠ΄. Для массивов ΠΎΡ‚ 1000 Π΄ΠΎ 100 000 элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ БоотвСтствиС. Для ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² записСй β€” Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ запросы.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ссылок

ΠžΡΠΎΠ±ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдставляСт ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π° массив состоит Π½Π΅ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π° ΠΈΠ· ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ структур. Π’ 1Π‘ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ссылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ. Но Ссли Π² массивС Π»Π΅ΠΆΠ°Ρ‚ структуры с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎ ссылкС Π² памяти, стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

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

Π’Π°ΠΊΠΆΠ΅ стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно. Π’ массивС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π° основС БоотвСтствия ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ НСопрСдСлСно ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, оставляя Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр пустого значСния, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈ трСбуСтся.

  • πŸ”‘ Бсылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π‘Π” всСгда ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ.
  • πŸ— Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ полями ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π΅Π· спСц. ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • 🚫 ΠŸΡƒΡΡ‚Ρ‹Π΅ значСния (НСопрСдСлСно) Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ очистки.

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

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ очистки массива

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

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

Частой ошибкой Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² являСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· массива Π²ΠΎ врСмя прямого ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Для i = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°(). Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ индСксов ΠΈ пропуску элСмСнтов. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ индСкса ΠΈΠ»ΠΈ создавайтС Π½ΠΎΠ²Ρ‹ΠΉ массив.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив, содСрТащий элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строки ΠΈ числа), Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния. ΠŸΠ΅Ρ€Π΅Π΄ очисткой ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² однородности ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ с БоотвСтствиСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ‚Π΅Π½ ΠΊ Ρ‚ΠΈΠΏΠ°ΠΌ, Ссли ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ΠΈ.

Для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² высоконагруТСнных систСмах рСкомСндуСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ создания Π»ΠΈΡˆΠ½ΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ с запросом, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ сразу ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ записи ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅.

РСгулярный Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π°, связанного с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, способСн Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ². Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, встроСнныС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Β«ΡƒΠ·ΠΊΠΈΠ΅ мСста» Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅() для Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ссли ваши Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ находятся Π² этом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ β€” это встроСнная ΠΈ максимально быстрая функция ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ самый быстрый для массива ΠΈΠ· 10 элСмСнтов?

Для ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… массивов (Π΄ΠΎ 50-100 элСмСнтов) Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ negligible (Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°). Однако ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° (Ρ‡Π΅Ρ€Π΅Π· Найти) Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ достаточно быстро ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ создания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ БоотвСтствиС ΠΈΠ»ΠΈ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ экономит ΠΏΠ°ΠΌΡΡ‚ΡŒ.

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈ Π² массивС структур 1Π‘?

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

БохраняСтся Π»ΠΈ порядок элСмСнтов ΠΏΡ€ΠΈ использовании Запроса?

НСт, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π ΠΠ—Π›Π˜Π§ΠΠ«Π• Π² языкС запросов 1Π‘ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ сохранСниС исходного порядка записСй. Если порядок Π²Π°ΠΆΠ΅Π½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ для сортировки Π² сСкции Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО, Π½ΠΎ это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия Ρ‚Π°ΠΊΠΎΠ³ΠΎ поля Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π² массивС Π΅ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно?

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ обрабатываСтся всСми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. ΠŸΡ€ΠΈ использовании БоотвСтствия ΠΎΠ½ΠΎ выступаСт ΠΊΠ°ΠΊ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. Если Π² массивС нСсколько НСопрСдСлСно, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ для Π·Π°Π΄Π°Ρ‡ΠΈ удалСния Π΄ΡƒΠ±Π»Π΅ΠΉ.

ВлияСт Π»ΠΈ вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²?

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами ΠΈ соотвСтствиями ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ Π²ΠΎ всСх соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.2, 8.3). Однако ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΠΈΠΆΠΊΠ° запросов ΠΈ оптимизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. РСкомСндуСтся Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π° Π½Π° Ρ‚ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°.