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

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

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

1. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ понятия: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² 1Π‘

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ сортировкС, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, с Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ. Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π’Π—) Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 β€” это динамичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ строк ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Она Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² Excel ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… послС SQL-запроса, Π½ΠΎ с рядом особСнностСй:

  • πŸ“Œ ДинамичСская структура: ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ "Π½Π° Π»Π΅Ρ‚Ρƒ".
  • πŸ“Œ Випизация Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ свой Ρ‚ΠΈΠΏ (строка, число, Π΄Π°Ρ‚Π°, ссылка ΠΈ Ρ‚.Π΄.).
  • πŸ“Œ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для поиска, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, сортировки ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ.
  • πŸ“Œ Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… связСй ΠΌΠ΅ΠΆΠ΄Ρƒ строками (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ).

Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²:

  • πŸ“Š ΠžΡ‚Ρ‡Ρ‘Ρ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΠΎΡ€ΠΎΡ‚Π½ΠΎ-сальдовая Π²Π΅Π΄ΠΎΠΌΠΎΡΡ‚ΡŒ).
  • πŸ“‹ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… (Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Excel, ΠΎΠ±ΠΌΠ΅Π½ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами).
  • πŸ”„ Алгоритмах (ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ расчёты, Π±ΡƒΡ„Π΅Ρ€Ρ‹ для ΠΎΠ±ΠΌΠ΅Π½Π°).

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π½Π° дискС ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π‘Π£Π‘Π”, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π²ΠΎ врСмя сСанса. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ быстрыми для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ строк.

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

2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Π±Π΅Π· программирования)

НС всСгда для сортировки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½ΡƒΠΆΠ½Ρ‹ знания 1Π‘-ΠΊΠΎΠ΄ΠΈΠ½Π³Π°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ (БухгалтСрия 3.0, Π£Π’ 11, Π—Π£ΠŸ 3.1) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ прямо Π² интСрфСйсС:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ).
  2. Π©Ρ‘Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:
    • πŸ”Ό Один ΠΊΠ»ΠΈΠΊ β€” сортировка ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ (А→Я, 0β†’9).
    • πŸ”½ Π”Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ»ΠΈΠΊ β€” сортировка ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ (Я→А, 9β†’0).
  3. Для ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎΠΉ сортировки Π·Π°ΠΆΠΌΠΈΡ‚Π΅ Shift ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ.
  4. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° стандартных ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния:

    • ❌ НСльзя ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ порядок сортировки для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… сСансов.
    • ❌ НС всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ сортировку (зависит ΠΎΡ‚ настройки Ρ„ΠΎΡ€ΠΌΡ‹).
    • ❌ НСт возмоТности ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ вычисляСмым полям (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ "Π¦Π΅Π½Π° * ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ").
    πŸ“Š Как часто Π²Ρ‹ сортируСтС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² 1Π‘ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Ρ‡Π΅Ρ€Π΅Π· интСрфСйс)?
    ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ
    Иногда
    Рядко
    Никогда

    Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ отсортированныС Π΄Π°Π½Π½Ρ‹Π΅ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹). Π’Π°ΠΊΠΆΠ΅ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ сортировка Π½Π΅ влияСт Π½Π° исходный порядок строк Π² памяти β€” ΠΎΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСняСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

    πŸ’‘

    Π§Ρ‚ΠΎΠ±Ρ‹ быстро Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ исходный порядок строк, Ρ‰Ρ‘Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ строки (Ссли ΠΎΠ½Π° отобраТаСтся).

    3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ сортировка: ΠΌΠ΅Ρ‚ΠΎΠ΄ Sort()

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

    Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ИмяКолонки1, ИмяКолонки2 НаправлСниС");
    

    Π“Π΄Π΅ НаправлСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния:

    • Π’ΠΎΠ·Ρ€ (ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).
    • Π£Π±Ρ‹Π² (ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ).

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

    1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅:

    Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π”Π°Ρ‚Π°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π’ΠΎΠ·Ρ€");  // ΠžΡ‚ старых ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ
    

    Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π‘ΡƒΠΌΠΌΠ° Π£Π±Ρ‹Π²"); // ΠžΡ‚ большСй суммы ΠΊ мСньшСй

    2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ:

    Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚, Π”Π°Ρ‚Π°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π£Π±Ρ‹Π²");
    

    // Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρƒ (А→Я), Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ Π΄Π°Ρ‚Π΅ (ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠΉ ΠΊ старой)

    3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

    По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустыС значСния (NULL) ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ списка. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊΠŸΡƒΡΡ‚Ρ‹Ρ…Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

    Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π£Π±Ρ‹Π²", "Π’ΠšΠΎΠ½Ρ†Π΅");
    
    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ОписаниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€
    ВНачалС ΠŸΡƒΡΡ‚Ρ‹Π΅ значСния Π² Π½Π°Ρ‡Π°Π»Π΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ПолС")
    Π’ΠšΠΎΠ½Ρ†Π΅ ΠŸΡƒΡΡ‚Ρ‹Π΅ значСния Π² ΠΊΠΎΠ½Ρ†Π΅. Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ПолС Π£Π±Ρ‹Π²", "Π’ΠšΠΎΠ½Ρ†Π΅")
    Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠŸΡƒΡΡ‚Ρ‹Π΅ значСния Π½Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² сортировкС. Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ПолС", "Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ")
    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Sort() измСняСт порядок строк Π² самой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Ρ‘ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходный порядок, создайтС копию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой:
    Π’Π—ΠšΠΎΠΏΠΈΡ = Π’Π—.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ();
    

    Π’Π—ΠšΠΎΠΏΠΈΡ.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ПолС");

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ (Π΄Π°Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Ρ‚Π°ΠΌΠΈ, Π° Π½Π΅ строками)

    Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ

    Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ссли исходный порядок Π²Π°ΠΆΠ΅Π½

    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ для ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎΠΉ сортировки

    -->

    4. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с использованиСм индСксов

    Если Π²Π°ΠΌ часто приходится ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ полям, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы. ИндСкс β€” это слуТСбная структура, которая ускоряСт поиск ΠΈ сортировку Π·Π° счёт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ 1Π‘ индСксы для Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().

    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° индСксов:

    • ⚑ УскорСниС сортировки (особСнно Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…).
    • πŸ” Быстрый поиск ΠΏΠΎ проиндСксированным полям.
    • πŸ”„ АвтоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания индСкса:

    Π’Π—.Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚, Π”Π°Ρ‚Π°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°");
    

    // Π’Π΅ΠΏΠ΅Ρ€ΡŒ сортировка ΠΏΠΎ этим полям Π±ΡƒΠ΄Π΅Ρ‚ быстрСС

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

    ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с индСксами:

    • πŸ“Œ Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.
    • πŸ“Œ Π§Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ индСксированиС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строк.
    • πŸ“Œ Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ для ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π₯ранилищСЗначСния ΠΈΠ»ΠΈ Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.

Для удалСния индСкса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π’Π—.Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒΠ˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ();
Когда индСксы Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚?

Π˜Π½Π΄Π΅ΠΊΡΡ‹ бСсполСзны, Ссли Π²Ρ‹ сортируСтС ΠΏΠΎ вычисляСмым полям (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ "Π¦Π΅Π½Π° * ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ"). Π’ этом случаС 1Π‘ всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ сортировку Π΄Π°Π½Π½Ρ‹Ρ…, игнорируя индСксы. Π’Π°ΠΊΠΆΠ΅ индСксы Π½Π΅ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ сортировку, Ссли ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² сортировки большС, Ρ‡Π΅ΠΌ проиндСксированных ΠΏΠΎΠ»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, индСкс ΠΏΠΎ полю "ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚", Π° сортировка ΠΏΠΎ "ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚, Π”Π°Ρ‚Π°, Π‘ΡƒΠΌΠΌΠ°").

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΎΡ‡Π΅Π½ΡŒ большими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (100 000+ строк), рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ частичной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ использования Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… вмСсто Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

5. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ† с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ

Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ иСрархичСскиС Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ»ΠΈ структуру ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ). Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠΌΠ΅Π΅Ρ‚ свои Π½ΡŽΠ°Π½ΡΡ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ ΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ влоТСнности.

Для сортировки иСрархичСской Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

  1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ связям (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ структуру Π΄Π΅Ρ€Π΅Π²Π°).
  2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ полям (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ наимСнованию Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ с сохранСниСм ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, НаимСнованиС Π’ΠΎΠ·Ρ€");

// Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ

Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС элСмСнты нСзависимо ΠΎΡ‚ уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для плоского отобраТСния), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ рСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ сглаТиваниС ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ:

// 1. ДобавляСм ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ для хранСния "ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ"

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠŸΠΎΠ»Π½Ρ‹ΠΉΠŸΡƒΡ‚ΡŒ");

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠŸΠΎΠ»Π½Ρ‹Π΅ΠŸΡƒΡ‚ΠΈ(Π’Π—);

// 2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠŸΠΎΠ»Π½Ρ‹ΠΉΠŸΡƒΡ‚ΡŒ Π’ΠΎΠ·Ρ€");

// Ѐункция для заполнСния ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ (рСкурсивно)

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠŸΠΎΠ»Π½Ρ‹Π΅ΠŸΡƒΡ‚ΠΈ(Π’Π—)

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

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

Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—.Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ);

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠŸΠΎΠ»Π½Ρ‹ΠΉΠŸΡƒΡ‚ΡŒ = Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠŸΠΎΠ»Π½Ρ‹ΠΉΠŸΡƒΡ‚ΡŒ + " > " + Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС;

Π˜Π½Π°Ρ‡Π΅

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠŸΠΎΠ»Π½Ρ‹ΠΉΠŸΡƒΡ‚ΡŒ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС;

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ сортировкС иСрархичСских Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Sort() Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… связСй структура Π΄Π΅Ρ€Π΅Π²Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π°! ВсСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π΅ Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π² ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ сортировки, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ.
πŸ’‘

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ сортировки иСрархичСских Π΄Π°Π½Π½Ρ‹Ρ… всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ составной ΠΊΠ»ΡŽΡ‡, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π΅ родитСля. НапримСр: Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, НаимСнованиС").

6. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ вычисляСмым полям ΠΈ слоТным критСриям

Иногда трСбуСтся ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠΎ полю, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Π½Π΅ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅Ρ‚ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ вычислСния (Π¦Π΅Π½Π° * ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ) ΠΈΠ»ΠΈ ΠΏΠΎ части строки (Π›Π΅Π²(Артикул, 3)). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ Sort() Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΈ приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ:

Бпособ 1: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ для хранСния вычисляСмого значСния.
  2. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сортировку ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅.
  4. Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ суммС строки (Π¦Π΅Π½Π° * ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ).

// 1. ДобавляСм ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘ΡƒΠΌΠΌΠ°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ");

// 2. ЗаполняСм Π΅Ρ‘

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

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

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

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

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π‘ΡƒΠΌΠΌΠ°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π£Π±Ρ‹Π²");

// 4. УдаляСм ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ (Ссли ΠΎΠ½Π° большС Π½Π΅ Π½ΡƒΠΆΠ½Π°)

Π’Π—.Колонки.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ("Π‘ΡƒΠΌΠΌΠ°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ");

Бпособ 2: ИспользованиС массива индСксов

Если Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ:

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΏΠ°Ρ€ "ЗначСниСДляБортировки – Π˜Π½Π΄Π΅ΠΊΡΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ".
  2. ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив.
  3. ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΌ порядкС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ‚Ρ€Ρ‘ΠΌ символам Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°.

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

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

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Артикул, 3);

ΠœΠ°ΡΡΠΈΠ²Π”Π»ΡΠ‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ + "|" + Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ИндСкс);

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

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ массив

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

// ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

ВЗНовая = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

ВЗНовая.Колонки.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(Π’Π—.Колонки);

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

ИндСкс = Число(ΠŸΡ€Π°Π²(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) - Найти(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, "|")));

ВЗНовая.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Π—[ИндСкс]);

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

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΈΠΉ, Π½ΠΎ позволяСт ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π»ΡŽΠ±Ρ‹ΠΌ критСриям, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ:

  • πŸ“Œ Части строк (Π›Π΅Π²(), ΠŸΡ€Π°Π²(), Π‘Ρ€Π΅Π΄()).
  • πŸ“Œ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠžΠΊΡ€(), ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π°()).
  • πŸ“Œ Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ· связанных Ρ‚Π°Π±Π»ΠΈΡ† (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π° ΠΏΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ΄Ρƒ).
πŸ’‘

Если Π²Ρ‹ часто сортируСтС ΠΏΠΎ вычисляСмым полям, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ хранСния этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ обновлСния ΠΈΡ… ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ исходных Π΄Π°Π½Π½Ρ‹Ρ….

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

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

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Если Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚, пСрСнСситС Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π‘Π” ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сортировку SQL-запросом:

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

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

"ВЫБРАВЬ

| Π’Π—.ПолС1,

| Π’Π—.ПолС2

|Π˜Π—

| &Π’Π— КАК Π’Π—

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

| Π’Π—.ПолС1 Π’ΠžΠ—Π ,

| Π’Π—.ПолС2 Π£Π‘Π«Π’";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π’Π—", Π’Π—);

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

2. РаздСляйтС большиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° постраничная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, сортируйтС Π΄Π°Π½Π½Ρ‹Π΅ порциями ΠΏΠΎ 1000–5000 строк:

Π¨Π°Π³ = 5000;

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

Π§Π°ΡΡ‚ΡŒΠ’Π— = Π’Π—.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(Инд, Π¨Π°Π³);

Π§Π°ΡΡ‚ΡŒΠ’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ПолС");

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° отсортированной части

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

3. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ

ΠŸΠ΅Ρ€Π΅Π΄ сортировкой ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² критСриях:

Π’Π—.Колонки.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ("ΠΠ΅Π½ΡƒΠΆΠ½ΠΎΠ΅ΠŸΠΎΠ»Π΅1");

Π’Π—.Колонки.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ("ΠΠ΅Π½ΡƒΠΆΠ½ΠΎΠ΅ΠŸΠΎΠ»Π΅2");

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠΡƒΠΆΠ½ΠΎΠ΅ΠŸΠΎΠ»Π΅");

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Когда ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠŸΡ€ΠΈΡ€ΠΎΡΡ‚ скорости
Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π‘Π” Π’Π°Π±Π»ΠΈΡ†Ρ‹ > 50 000 строк Π² 5–10 Ρ€Π°Π·
ΠŸΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½Π°Ρ сортировка Π’Π°Π±Π»ΠΈΡ†Ρ‹ > 100 000 строк Π² 2–3 Ρ€Π°Π·Π°
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π’Π°Π±Π»ΠΈΡ†Ρ‹ с > 20 ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ Π΄ΠΎ 30%
Π˜Π½Π΄Π΅ΠΊΡΡ‹ Частая сортировка ΠΏΠΎ ΠΎΠ΄Π½ΠΈΠΌ полям Π΄ΠΎ 50%
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π‘Π” ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ограничСния Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² PostgreSQL ΠΈ MS SQL Π»ΠΈΠΌΠΈΡ‚ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ). Π’Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ послС использования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ Π±Π°Π·Ρƒ.

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

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

1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ для чисСл, хранящихся ΠΊΠ°ΠΊ строки

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Колонка с числами ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΈ сортировка Π΄Π°Ρ‘Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ "100", "20", "3" вмСсто "3", "20", "100".

РСшСниС: ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² числовой Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой:

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ЧисловоСПолС = Число(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠ΅ΠŸΠΎΠ»Π΅);

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

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ЧисловоСПолС");

2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π΄Π°Ρ‚Π°ΠΌ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ врСмя

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π”Π°Ρ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ "01.01.2023 23:59", "02.01.2023 00:01", хотя логичСски вторая Π΄Π°Ρ‚Π° ΠΏΠΎΠ·ΠΆΠ΅.

РСшСниС: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Ρ‚Ρ‹+Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ сортируйтС ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ:

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π”Π°Ρ‚Π°, ВрСмя");

3. МСдлСнная сортировка ΠΈΠ·-Π·Π° пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π’Π°Π±Π»ΠΈΡ†Π° сортируСтся Π΄ΠΎΠ»Π³ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (NULL).

РСшСниС: Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ пустыС значСния ΠΈΠ· сортировки ΠΈΠ»ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΈΡ… Π·Π°Ρ€Π°Π½Π΅Π΅:

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ПолС", "Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ");

// Или

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

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ПолС = 0; // ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

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

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

4. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ послС сортировки

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ПослС сортировки Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты оказались Π²Ρ‹ΡˆΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ….

РСшСниС: ВсСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π΅ Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π² ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ сортировки:

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, НаимСнованиС");

5. Ошибка "НСдопустимоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°" ΠΏΡ€ΠΈ сортировкС

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠœΠ΅Ρ‚ΠΎΠ΄ Sort() Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Π΅ΡΡ‚ΡŒ нСсовмСстимыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строка ΠΈ число).

РСшСниС: ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ всС значСния ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ:

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ПолС = Π‘Ρ‚Ρ€ΠΎΠΊΠ°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ПолС); // ΠΈΠ»ΠΈ Число(), Π”Π°Ρ‚Π°()

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

πŸ’‘

ΠŸΠ΅Ρ€Π΅Π΄ сортировкой всСгда провСряйтС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…. Π”Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎ "Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ.

FAQ: ЧастыС вопросы ΠΏΠΎ сортировкС Ρ‚Π°Π±Π»ΠΈΡ† Π² 1Π‘

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

Π”Π°, для этого пСрСчислитС ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ:

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

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

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ отсортированный порядок строк ΠΏΡ€ΠΈ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Excel?

ΠœΠ΅Ρ‚ΠΎΠ΄ Sort() мСняСт порядок строк Π² самой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, поэтому ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² Excel Ρ‡Π΅Ρ€Π΅Π· Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ() ΠΈΠ»ΠΈ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() сортировка сохранится автоматичСски. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ(), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ порядок Π²Ρ‹Π²ΠΎΠ΄Π° строк.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сортировка ΠΏΠΎ строковому полю ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ рСгистр?

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сортировка строк Π² 1Π‘ рСгистронСзависимая. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ рСгистр, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ строки ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ рСгистру ΠΏΠ΅Ρ€Π΅Π΄ сортировкой:

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠŸΠΎΠ»Π΅Π”Π»ΡΠ‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ = Π’Π Π΅Π³(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ΠŸΠΎΠ»Π΅);

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

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠŸΠΎΠ»Π΅Π”Π»ΡΠ‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ");

Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠΎ полю, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Π½Π΅ΠΉ Π½Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· справочника)?

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· справочника, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сортировку:

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π°");

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

ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚();

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π° = ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС;

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

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π°");

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅Π”Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ БоотвСтствиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

МоТно Π»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сортировку ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ исходный порядок строк?

НСт, ΠΌΠ΅Ρ‚ΠΎΠ΄ Sort() физичСски пСрСставляСт строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ исходный порядок:

  1. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ индСксы строк Π΄ΠΎ сортировки Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅.
  2. Или создайтС копию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с сохранСниСм индСксов:

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ");

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ИндСкс;

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

// ПослС сортировки:

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ");