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

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

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() ΠΈ Π˜Π½Π΄Π΅ΠΊΡΡ‹

НачнСм с самого простого β€” встроСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(). Он доступСн для любой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ строки ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ. Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост:

Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Колонка1 Π’ΠΎΠ·Ρ€, Колонка2 Π£Π±Ρ‹Π²");

Π“Π΄Π΅:

  • πŸ”Ή Π’ΠΎΠ·Ρ€ β€” сортировка ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ (А-Π―, 0-9, ΠΎΡ‚ старых Π΄Π°Ρ‚ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ)
  • πŸ”Ή Π£Π±Ρ‹Π² β€” сортировка ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ (Π―-А, 9-0, ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Ρ‚ ΠΊ старым)
  • πŸ”Ή Колонка1, Колонка2 β€” ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ (ΠΏriorΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ порядку слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌΠΈ сначала ΠΏΠΎ ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (возрастаниС), Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ Π¦Π΅Π½Π΅ (ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΠ΅):

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Π’ΠΎΠ·Ρ€, Π¦Π΅Π½Π° Π£Π±Ρ‹Π²");
πŸ’‘

Если имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("[Π”Π°Ρ‚Π° создания] Π£Π±Ρ‹Π²").

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() измСняСт ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ порядок, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ создайтС копию:

Π’ΠΎΠ²Π°Ρ€Ρ‹ΠšΠΎΠΏΠΈΡ = Π’ΠΎΠ²Π°Ρ€Ρ‹.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ();

Π’ΠΎΠ²Π°Ρ€Ρ‹ΠšΠΎΠΏΠΈΡ.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("НаимСнованиС Π’ΠΎΠ·Ρ€");

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ индСксам: ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это эффСктивнСС

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ β€” использованиС индСксов ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ часто ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ нСизвСстны Π·Π°Ρ€Π°Π½Π΅Π΅. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ начинаСтся с 0:

Π’Π°Π±Π»ΠΈΡ†Π°.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(2, НаправлСниСБортировки.Π’ΠΎΠ·Ρ€); // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ 3-ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° сортировки ΠΏΠΎ индСксам:

  • πŸ”Ή БыстродСйствиС β€” ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с индСксами для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†
  • πŸ”Ή Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” Π½Π΅ зависит ΠΎΡ‚ ΠΈΠΌΠ΅Π½ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ
  • πŸ”Ή Удобство ΠΏΡ€ΠΈ динамичСском Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†

ΠœΠ΅Ρ‚ΠΎΠ΄ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠšΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Имя")Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π”Π°Ρ‚Π° Π’ΠΎΠ·Ρ€")Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(ИндСкс)Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(1, НаправлСниСБортировки.Π£Π±Ρ‹Π²)ДинамичСскиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, оптимизация скорости
ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Π°Ρ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π Π΅Π³ΠΈΠΎΠ½, Π“ΠΎΡ€ΠΎΠ΄ Π’ΠΎΠ·Ρ€")ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ нСскольким полям
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ сортировки Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
По имСнам колонок
По индСксам
Зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ
НС ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит пустыС значСния (NULL), ΠΎΠ½ΠΈ всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ β€” ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΎ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π½Π΅ настраиваСтся.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ сортировкС ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ с Ρ‚ΠΈΠΏΠΎΠΌ Π‘Ρ‚Ρ€ΠΎΠΊΠ° рСгистр символов учитываСтся! "АпСльсин" ΠΈ "апСльсин" Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ значСниями. Для игнорирования рСгистра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с использованиСм запросов 1Π‘

Для слоТных сцСнариСв, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…, эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² запросах. Π­Ρ‚ΠΎ позволяСт:

  • πŸ”Ή Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· измСнСния исходной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  • πŸ”Ή ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сортировку с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ выраТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировка ΠΏΠΎ части строки ΠΈΠ»ΠΈ вычисляСмому полю)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запроса с сортировкой:

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

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

"ВЫБРАВЬ

| ВоварыНаБкладС.НаимСнованиС КАК Π’ΠΎΠ²Π°Ρ€,

| ВоварыНаБкладС.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ,

| ВоварыНаБкладС.Π”Π°Ρ‚Π°ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΡ

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π’ΠΎΠ²Π°Ρ€Ρ‹ КАК ВоварыНаБкладС

|Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО

| Π”Π°Ρ‚Π°ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΡ Π£Π‘Π«Π’,

| НаимСнованиС Π’ΠžΠ—Π ";

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

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°: Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ β€” ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ выраТСниям (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО Π›Π•Π’(НаимСнованиС, 3)). ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” Π‘Π£Π‘Π” ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ сортировку Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСрвСра. Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опСрациями β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°, объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†.

Как ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ вычисляСмому полю?

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ прямо Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО:

Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО

Π’Π«Π‘ΠžΠ 

ΠšΠžΠ“Π”Π ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ > 100 Π’ΠžΠ“Π”Π 1

Π˜ΠΠΠ§Π• 0

ΠšΠžΠΠ•Π¦ КАК ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π£Π‘Π«Π’

Π­Ρ‚ΠΎ отсортируСт сначала Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ с количСством > 100, Π·Π°Ρ‚Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ .Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() сортировка сохраняСтся. Однако Ссли Π²Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (добавляСтС/удаляСтС строки), порядок ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒΡΡ. Π’ этом случаС придСтся ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ сортировка: ΠΊΠΎΠ³Π΄Π° стандартных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² нСдостаточно

Иногда трСбуСтся кастомная Π»ΠΎΠ³ΠΈΠΊΠ° сортировки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ стандартными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. НапримСр:

  • πŸ”Ή Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ слоТному Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ (ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ значСниям)
  • πŸ”Ή Π£Ρ‡Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… особСнностСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π° послС Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Ρ‹)
  • πŸ”Ή ДинамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ порядка Π² зависимости ΠΎΡ‚ условий

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ сортировку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массивов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ:

// Π—Π°Π΄Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ = Новый БоотвСтствиС;

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°", 1);

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ОдСТда", 2);

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹", 3);

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ

Для Инд = 0 По Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¦ΠΈΠΊΠ»

Для Инд2 = Инд + 1 По Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¦ΠΈΠΊΠ»

Если ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹[Π’ΠΎΠ²Π°Ρ€Ρ‹[Инд2].ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ] < ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹[Π’ΠΎΠ²Π°Ρ€Ρ‹[Инд].ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ] Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠžΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ(Инд, Инд2);

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

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

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

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† (1000+ строк) ручная сортировка Π±ΡƒΠ΄Π΅Ρ‚ нСэффСктивна. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² запросах (описано Π²Ρ‹ΡˆΠ΅). Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрой сортировки (QuickSort) Π½Π° встроСнном языкС. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Script ΠΈΠ»ΠΈ OneScript для слоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ).

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ сортировки|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запросы)|Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию исходных Π΄Π°Π½Π½Ρ‹Ρ…|ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° нСбольшом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅-->

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ

Часто трСбуСтся Π½Π΅ просто ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ, сохраняя порядок Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏ. НапримСр, ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ ΠΏΠΎ катСгориям, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ β€” ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ†Π΅Π½Π΅.

Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

  1. Π‘Π½Π°Ρ‡Π°Π»Π° сортируСм всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌΡƒ полю ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ критСриям.
  2. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, выдСляя Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ формируя ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ сортировки:

// 1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π’ΠΎΠ²Π°Ρ€Ρ‹.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Π’ΠΎΠ·Ρ€, Π¦Π΅Π½Π° Π£Π±Ρ‹Π²");

// 2. Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π΅ΠΊΡƒΡ‰Π°ΡΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ = "";

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

Если Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ <> Π’Π΅ΠΊΡƒΡ‰Π°ΡΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Π’ΠΎΠ³Π΄Π°

// ДобавляСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π³Ρ€ΡƒΠΏΠΏΡ‹

НоваяБтрока = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.Π’ΠΈΠΏΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ";

НоваяБтрока.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ;

Π’Π΅ΠΊΡƒΡ‰Π°ΡΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ;

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

// ДобавляСм Ρ‚ΠΎΠ²Π°Ρ€

НоваяБтрока = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.Π’ΠΈΠΏΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = "Π’ΠΎΠ²Π°Ρ€";

НоваяБтрока.НаимСнованиС = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС;

НоваяБтрока.Π¦Π΅Π½Π° = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π΅Π½Π°;

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

Для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Ссли Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π² управляСмыС Ρ„ΠΎΡ€ΠΌΡ‹). УсловноС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ (Ρ€Π°Π·Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π³Ρ€ΡƒΠΏΠΏ). ΠžΡ‚ΡΡ‚ΡƒΠΏΡ‹ (для тСкстового прСдставлСния).

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ сортировки для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, содСрТащими дСсятки тысяч строк, стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ΠΎΡ‚ нСсколько способов ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запросы β€” сортировка Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π£Π‘Π” всСгда быстрСС, Ρ‡Π΅ΠΌ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.
  • πŸ”Ή Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ β€” Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° часто сортируСтся ΠΏΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ полям, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ индСксы Π·Π°Ρ€Π°Π½Π΅Π΅.
  • πŸ”Ή РаздСляйтС Π΄Π°Π½Π½Ρ‹Π΅ β€” для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Π° Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • πŸ”Ή ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ автосортировку Π² динамичСских списках, Ссли ΠΎΠ½Π° Π½Π΅ Π½ΡƒΠΆΠ½Π°.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с 50 000 строк:

ΠœΠ΅Ρ‚ΠΎΠ΄Π’Ρ€Π΅ΠΌΡ выполнСния (мс)ΠŸΠ°ΠΌΡΡ‚ΡŒ (ΠœΠ‘)
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Колонка")1200-150080-100
Запрос с Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО300-40050-60
Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ сортировка150-20040-50
Ручная сортировка (QuickSort)800-100070-90

Для критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° сСрвСр (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚). Использования Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PostgreSQL Ρ‡Π΅Ρ€Π΅Π· 1Π‘:АдаптСр ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ). ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ отсортированных Π΄Π°Π½Π½Ρ‹Ρ… (Ссли сортировка выполняСтся часто с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ).

πŸ’‘

Для Ρ‚Π°Π±Π»ΠΈΡ† Π±ΠΎΠ»Π΅Π΅ 10 000 строк всСгда тСстируйтС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сортировки Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ зависит ΠΎΡ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… рСсурсов.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ сортировка Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ зависаниям интСрфСйса. Для Ρ‚Π°ΠΊΠΈΡ… случаСв Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ сСрвСрныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡŽ (постраничный Π²Ρ‹Π²ΠΎΠ΄).

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

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

1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ строковым полям Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с числами ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ тСкст ("100" ΠΈΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ "20"). РСшСниС: ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ Π² числовой Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС:

Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО Π§Π˜Π‘Π›Πž(Код) Π’ΠžΠ—Π 

2. Π”Π°Ρ‚Ρ‹ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ строки ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Колонка с Π΄Π°Ρ‚Π°ΠΌΠΈ отобраТаСтся Π² порядкС "01.01.2023", "15.12.2022", "30.11.2023". РСшСниС: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π”Π°Ρ‚Π°. Если Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΠ· внСшнСго источника, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΈΡ… явно:

Π”Π°Ρ‚Π°Π”ΠΎΠΊ = Π”Π°Ρ‚Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π°Π±Π»ΠΈΡ†Ρ‹.Π”Π°Ρ‚Π°);

3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ примСняСтся послС измСнСния Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ПослС добавлСния/удалСния строк порядок сбиваСтся. РСшСниС: Π’Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ послС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π£Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΠ‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ = Π˜ΡΡ‚ΠΈΠ½Π° (для динамичСских списков).

4. МСдлСнная сортировка Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠŸΡ€ΠΈΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΏΡ€ΠΈ сортировкС. РСшСниС:

  • πŸ”Ή ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ (ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒΠžΠΆΠΈΠ΄Π°Π½ΠΈΡ = Π˜ΡΡ‚ΠΈΠ½Π°).
  • πŸ”Ή ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ сортировку Π½Π° сСрвСр.
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡŽ).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сортировка ΠΏΠΎ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌ значСниям Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

Π’ 1Π‘ Π˜ΡΡ‚ΠΈΠ½Π° считаСтся "большС", Ρ‡Π΅ΠΌ Π›ΠΎΠΆΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ сначала ΠΈΠ΄ΡƒΡ‚ строки с Π›ΠΎΠΆΡŒ, Π·Π°Ρ‚Π΅ΠΌ с Π˜ΡΡ‚ΠΈΠ½Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ НЕ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ с Ρ€Π°Π·Π½Ρ‹ΠΌ порядком?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡΡ‚ΡƒΡŽ для пСрСчислСния ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ:

Π’Π°Π±Π»ΠΈΡ†Π°.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Π’ΠΎΠ·Ρ€, Π”Π°Ρ‚Π° Π£Π±Ρ‹Π², Π‘ΡƒΠΌΠΌΠ° Π’ΠΎΠ·Ρ€");

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ опрСдСляСт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ сортировки (слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ).

МоТно Π»ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ вычисляСмому полю, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² исходных Π΄Π°Π½Π½Ρ‹Ρ…?

Π”Π°, для этого:

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ вычислСний.
  2. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сортировку ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅.

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

Π’Π°Π±Π»ΠΈΡ†Π°.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠŸΠΎΠ»Π½Π°ΡΠ‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ");

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠŸΠΎΠ»Π½Π°ΡΠ‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π΅Π½Π° * Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ;

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

Π’Π°Π±Π»ΠΈΡ†Π°.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠŸΠΎΠ»Π½Π°ΡΠ‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π£Π±Ρ‹Π²");

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС сортировки ΠΏΠΎ Π΄Π°Ρ‚Π΅ строки Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π΅ ΠΏΠΎ порядку?

НаиболСС вСроятныС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • πŸ”Ή Колонка ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π‘Ρ‚Ρ€ΠΎΠΊΠ° вмСсто Π”Π°Ρ‚Π° (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· Π’Π°Π±Π»ΠΈΡ†Π°.Колонки[Имя].ВипЗначСния).
  • πŸ”Ή Π’ Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ пустыС значСния ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "01.01.0001").
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊ строку.

РСшСниС: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ ΠΊ Ρ‚ΠΈΠΏΡƒ Π”Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ сортировкой ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запрос с явным ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ².

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ порядок сортировки ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… строк?

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹Π΅ строки Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ порядок:

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку Π² ΠΊΠΎΠ½Π΅Ρ†.
  2. Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ строки Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ сразу:

НоваяБтрока = Π’Π°Π±Π»ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.НаимСнованиС = "Π’ΠΎΠ²Π°Ρ€ X";

// Находим ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ для вставки

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ·ΠΈΡ†ΠΈΡŽΠ”Π»ΡΠ’ΡΡ‚Π°Π²ΠΊΠΈ(Π’Π°Π±Π»ΠΈΡ†Π°, "НаимСнованиС", "Π’ΠΎΠ²Π°Ρ€ X");

Π’Π°Π±Π»ΠΈΡ†Π°.ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ(Π’Π°Π±Π»ΠΈΡ†Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()-1, ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ);

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ сортировкой Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΈ толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅?

Π”Π°, Π΅ΡΡ‚ΡŒ нСсколько нюансов:

  • πŸ”Ή Π’ толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ сортировка выполняСтся Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ быстрСС для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.
  • πŸ”Ή Π’ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ сортировка Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс. РСкомСндуСтся ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° сСрвСр.
  • πŸ”Ή Π’ управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ… сортировка динамичСских списков ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Для ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ тСстируйтС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.