Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

АсимптотичСский Π°Π½Π°Π»ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

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

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ… ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ обозначСния Ρ‚ΠΈΠΏΠ°:
O(g(n)), &#937(g(n)), &#920(g(n)).
Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрмся, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Ρ‚Π°ΠΊΠΎΠ΅, Π½ΠΎ сначала я ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡŽ основныС классы слоТности примСняСмыС ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅:
f(n) = O(1) константа
f(n) = O(log(n)) логарифмичСский рост
f(n) = O(n) Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ рост
f(n) = O(n*log(n)) ΠΊΠ²Π°Π·ΠΈΠ»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ рост
f(n) = O(n^m) ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ рост
f(n) = O(2^n) ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ рост

Если Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‹ Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ обозначСниями, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅, послС прочтСния этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, всС станСт Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ понятнСС.
А Π½Π°Ρ‡Π½Π΅ΠΌ ΠΌΡ‹ с символа O.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
(1.1) Π—Π°ΠΏΠΈΡΡŒ Π²ΠΈΠ΄Π° f(n) = O(g(n)) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„-ия f(n) возрастаСт ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Ρ‡Π΅ΠΌ Ρ„-ия g(n) ΠΏΡ€ΠΈ с = с1 ΠΈ n = N, Π³Π΄Π΅ c1 ΠΈ N ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ большими числами, Ρ‚.Π΅. ΠŸΡ€ΠΈ c = c1 ΠΈ n >= N, c*g(n) >=f(n).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ O – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ это Π·Π½Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Π»ΡŽΠ±ΠΎΠΌΡƒ программисту Π·Π°Π΄Π°Ρ‡Ρƒ сортировки. Допустим Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 10 000 000 элСмСнтов. Договоримся Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠ΄ΡˆΠΈΠΉ случай, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° понадобится наибольшСС количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. НС Π΄ΠΎΠ»Π³ΠΎ думая, ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ сортировку ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ ΠΊΠ°ΠΊ ΡΠ°ΠΌΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ позволяСт ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив любой размСрности Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΉ памяти. Π’Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всС прСкрасно ΠΈ ΠΌΡ‹ с чистой ΡΠΎΠ²Π΅ΡΡ‚ΡŒΡŽ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ (для ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² здСсь ΠΈ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ язык Python).

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
рис.1.
зСлСная кривая соотвСтствуСт Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Ρ„-ΠΈΠΈ x^2 ΠΏΡ€ΠΈ c = 1, синия c = 5, красная c = 7

Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ Π½Π° всСх Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… ось абсцисс Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ размСрности Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° ось ΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠΎΠ»-Π²Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.
Нас интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ плоскости, которая соотвСтствуСт значСниям x большим 0, Ρ‚.ΠΊ. любой массив, ΠΏΠΎ-ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, поэтому, для удобства, ΡƒΠ±Π΅Ρ€Π΅ΠΌ Π»Π΅Π²Ρ‹Π΅ части Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Ρ„-ΠΈΠΉ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ лишь ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡŒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ плоскости.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
рис.2.
зСлСная кривая соотвСтствуСт Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Ρ„-ΠΈΠΈ x^2 ΠΏΡ€ΠΈ c = 1, синия c = 5, красная c = 7

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ c2 = 7. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ новая Ρ„-ия растСт быстрСС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ (красная кривая Π½Π° рис.2). Из опрСдСлСния (1.1), Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ с2 = 7 ΠΈ n >= 0, g(n) = 7*n^2 всСгда большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° Ρ„-ΠΈΠΈ f(n) = 5*n^2, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n^2).
ΠšΡ‚ΠΎ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° понял это объяснСниС, посмотритС Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Ρ„-ΠΈΠΉ ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ„-ия отмСчСнная Π½Π° Π½Π΅ΠΌ красным, ΠΏΡ€ΠΈ n >= 0 всСгда ΠΈΠΌΠ΅Π΅Ρ‚ большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ y, Ρ‡Π΅ΠΌ Ρ„-ия отмСчСнная синим.

Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² этой ситуации, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ сортировку? НСобходимо, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π±Ρ‹Π»Π° мСньшС Ρ‡Π΅ΠΌ O(n^2). ΠŸΠΎΡ€Π°Π·ΠΌΡ‹ΡΠ»ΠΈΠ² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹ Π±Ρ‹Π»ΠΎ, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ O(n), Ρ‚.Π΅. являСтся Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² случаС O(n) ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ возрастСт Π² N Ρ€Π°Π·, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ вмСсто N^2 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всСго лишь N. ΠŸΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ прирост скорости ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π²ΠΈΠ΄Π΅Π½ Π½Π° рис.3.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
Π‘Π΅Ρ€ΠΎΠΉ прямой ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° линСйная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π° Ρ‚Ρ€ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ n^2 ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… коэффициСнтах c.

Но оказываСтся, Ρ‡Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сортировку со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ O(n) Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС просто Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Π΄ΠΎΠΊ-Π²ΠΎ)! Π’Π°ΠΊ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ ΠΆΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΡ‹ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ? Она Ρ€Π°Π²Π½Π° O(n*log(n)), Ρ‡Ρ‚ΠΎ являСтся тСорСтичСски Π΄ΠΎΠΊΠ°Π·Π°Π½Ρ‹ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ для любого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки основанного Π½Π° сравнСнии элСмСнтов. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π½ΠΎ всС ΠΆΠ΅ это ΡƒΠΆΠ΅ ΠΈ Π½Π΅ O(n^2). ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ нашим трСбованиям.
Покопавшись Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌ удовлСтворяСт Β«ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка». Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° wiki, скаТу Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу O(n*log(n)) (Ρ‚.Π΅. максимально возмоТная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для сортировки), Π½ΠΎ ΠΏΡ€ΠΈ этом, ΠΎΠ½ довольно Ρ‚Ρ€ΡƒΠ΄Π΅Π½ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½ΠΈΠΆΠ΅ ΠΈ сравним скорости возрастания ΠΊΠΎΠ»-Π²Π° вычислСний для Π΄Π²ΡƒΡ… рассмотрСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
рис.4.

ЀиолСтовая кривая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ n*log(n). Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… n, ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка сущСствСнно Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρƒ сортировки ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ ΠΏΡ€ΠΈ любом ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΌΠΈ коэффициСнтах, ΠΎΠ΄Π½Π°ΠΊΠΎ всС-Ρ€Π°Π²Π½ΠΎ уступаСт гипотСтичСской сортировкС Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ слоТности (сСрая прямая Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅).
Π’ любом случаС, Π΄Π°ΠΆΠ΅ Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Ρ‡Π΅ΠΌ Β«ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΊΒ» Π½Π° быстром.

ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ вопрос, цСлСсообразно Π»ΠΈ всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½ΡƒΡŽ сортировку сортировкС ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ?

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
рис.5.

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° рис.5, ΠΏΡ€ΠΈ ΠΌΠ°Π»Ρ‹Ρ… n, различия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ достаточно ΠΌΠ°Π»Ρ‹ ΠΈ Π²Ρ‹Π³ΠΎΠ΄Π° ΠΎΡ‚ использования ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠΉ сортировки β€” совсСм Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°, Π° учитывая, Ρ‡Ρ‚ΠΎ Β«ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΊΒ» рСализуСтся Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ 5-6 строчками ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠ°Π»Ρ‹Ρ… n, ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния умствСнных ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ πŸ™‚

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΠ»Π΅Π΅ наглядно ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ классами слоТности, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
Допустим Ρƒ нас Π΅Ρ‚ΡΡŒ Π­Π’Πœ 45-Ρ‚ΠΈ Π»Π΅Ρ‚Π½Π΅ΠΉ давности. Π’ Π³ΠΎΠ»ΠΎΠ²Π΅ сразу Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚ мысли ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΡˆΠΊΠ°Ρ„Π°Ρ…, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… довольно-Ρ‚Π°ΠΊΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½ΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ. Допустим, Ρ‡Ρ‚ΠΎ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° Ρ‚Π°ΠΊΠΎΠΉ машинС выполняСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π·Π° 10 миллисСк. Π‘ Ρ‚Π°ΠΊΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ вычислСний, имСя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ слоТности O(n^2), Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ поставлСной Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΠΉΠ΄Π΅Ρ‚ ΠΎΠΎΠΎΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ‚ Π·Π°Ρ‚Π΅ΠΈ придСтся ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚ Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΉ Π·Π° допустимоС врСмя, Ссли ΠΆΠ΅ Π²Π·ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ O(n*log(n)), Ρ‚ΠΎ ситуация Π² ΠΊΠΎΡ€Π½Π΅ измСнится ΠΈ Π½Π° расчСт ΡƒΠΉΠ΄Π΅Ρ‚ Π½Π΅ большС мСсяца.

ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ, сколько ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ‚ сортировка массива Π² ΠΎΠ±ΠΎΠΈΡ… случаях

свСрх-Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Ρ‚Π°ΠΊΠΎΠ΅, Π½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ):
O(2^n) = ΠΎΠΎΠΎΠΎΠΎΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, всСлСнная ΡƒΠΌΡ€Π΅Ρ‚, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ наш расчСт…
ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΊ:
O(n^2) = 277777778 часов (классичСский β€œΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΊβ€)
ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка:
O(n*log(n)) = 647 часов (Ρ‚ΠΎ Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, примСняя ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½ΡƒΡŽ сортировку)
фантастичСски-эффСктивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:
O(n) = 2.7 часов (наш гипотСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя)
ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†:
O(log(n)) = ΠΎΠΎΠΎΠΎΠΎΠΎΡ‡Π΅Π½ΡŒ быстро, Таль, Ρ‡Ρ‚ΠΎ чудСс Π½Π΅ бываСт…

Π”Π²Π° послСдних случая (Ρ…ΠΎΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΈ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ сортировкС Π΄Π°Π½Π½Ρ‹Ρ…) я ΠΏΡ€ΠΈΠ²Π΅Π» лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‰ΡƒΡ‚ΠΈΠ» ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов слоТности.
На послСдок Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠΊΠ²ΠΎΠΉ O ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ· классов слоТности, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт Π΄Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, я ΠΌΠΎΠ³ Π±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сортировки ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ Ρ€Π°Π²Π½Π° O(2^n) ΠΈ тСорСтичСски это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π²Π΅Ρ€Π½Ρ‹ΠΌ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ такая ΠΎΡ†Π΅Π½ΠΊΠ° Π±Ρ‹Π»Π° Π±Ρ‹ лишСна смысла.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Анализ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Алгоритм β€” это Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдписаниС, ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ искомому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ [1].

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ рСсурсы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для провСдСния вычислСний, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΡ†Π΅Π½ΠΊΠΈ являСтся функция слоТности (трудоСмкости). ΠžΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ рСсурсом Ρ‡Π°Ρ‰Π΅ всСго являСтся процСссорноС врСмя (Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ) ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ (ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠΎ памяти). ΠžΡ†Π΅Π½ΠΊΠ° позволяСт ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя выполнСния ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

МодСль RAM (Random Access Machine)

КаТдоС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ устройство ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вычислСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π΅ бСрутся Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ кэша процСссора ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ многозадачности, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. Анализ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² проводят Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ абстрактного вычислитСля, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ машиной с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ доступом ΠΊ памяти (RAM).

МодСль состоит ΠΈΠ· памяти ΠΈ процСссора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ такая модСль Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΎΠ½Π° Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π°Π½Π°Π»ΠΈΠ·Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π­Π’Πœ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π½ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ оптимизация ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠšΠ»Π°ΡΡΡ‹ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Одним ΠΈΠ· способов ΠΎΡ†Π΅Π½ΠΊΠΈ трудоСмкости (\(T_n\)) являСтся подсчСт количСства выполняСмых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Рассмотрим Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска минимального элСмСнта массива.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°:

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

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ срСднСго случая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ†Π΅Π½ΠΊΠΈ повСдСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с расчСтом Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… равновСроятны. Однако, такая ΠΎΡ†Π΅Π½ΠΊΠ° достаточно слоТна:

АсимптотичСскиС обозначСния

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Однако, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ простым ΠΏΡƒΡ‚Π΅ΠΌ. Анализ проводят с расчСтом Π½Π° достаточно большой объСм ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (\( n \to \infty \)), поэтому ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ роста Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слоТности, Π° Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ скорости роста ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ постоянныС Ρ‡Π»Π΅Π½Ρ‹ ΠΈ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ‚.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ \(f_x = 10 \cdot x^2 + 20 \) ΠΈ \( g_x = x^2\) эквивалСнтны с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния скорости роста. НСзначащиС Ρ‡Π»Π΅Π½Ρ‹ лишь Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ «волнистости», которая затрудняСт Π°Π½Π°Π»ΠΈΠ·.

Π’ ΠΎΡ†Π΅Π½ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ асимптотичСскиС обозначСния, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ классы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

Π—Π°ΠΏΠΈΡΡŒ \(f_n = \mathcal(g_n)\) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f классу \(\mathcal(g)\), Ρ‚.Π΅. функция f ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° свСрху Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ g для достаточно Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. \(\exists n_0 > 0, c > 0 : \forall n > n_0, f_n \leq c \cdot g_n\).

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ g снизу Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ f записываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: \(g_n =\Omega(f_n)\). Нотации \(\Omega\) ΠΈ \(\mathcal\) взаимозамСняСмы: \(f_n = \mathcal(g_n) \Leftrightarrow g_n =\Omega(f_n)\).

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ алгоритмаАсимптотичСскиС обозначСния «О большоС» ΠΈ «ОмСга большоС»

Если Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f ΠΈ g ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ роста (\(f_n = \Theta(g_n)\)), Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ константы \(c_1\) ΠΈ \(c_2\) Ρ‚Π°ΠΊΠΈΠ΅, Ρ‡Ρ‚ΠΎ \(\exists n_0 > 0 : \forall n > n_0, f_n \leq c_1 \cdot g_n, f_n \geq c_2 \cdot g_n\). ΠŸΡ€ΠΈ этом \(f_n = \Theta(g_n) \Leftrightarrow g_n = \Theta(f_n)\).

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡΠΈΠΌΠΏΡ‚ΠΎΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ алгоритмаАсимптотичСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Π’Π΅Ρ‚Π° большоС»

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Алгоритм поиска минимального элСмСнта массива, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ N ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°. Π’Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ зависит ΠΎΡ‚ количСства элСмСнтов массива, поэтому ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ \(T^ = \mathcal(1)\). Π’ связи с этим, вСрхняя ΠΎΡ†Π΅Π½ΠΊΠ° всСго Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° \(T^_n = \mathcal(n) \cdot \mathcal(1) = \mathcal(n \cdot 1) = \mathcal(n)\). Аналогично вычисляСтся ниТняя ΠΎΡ†Π΅Π½ΠΊΠ° слоТности, Π° Π² силу Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° совпадаСт с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ β€” ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ \(T^_n = \Theta(n) \).

Алгоритм ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировки (bubble sort) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°. Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Ρ‹ элСмСнтов ΠΈ Ссли оказываСтся, Ρ‡Ρ‚ΠΎ элСмСнты стоят Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС β€” выполняСтся пСрСстановка. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² массивС найдСтся Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΏΠ°Ρ€Π° элСмСнтов, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ порядок [2].

Π’Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ swap Π½Π΅ зависит ΠΎΡ‚ количСства элСмСнтов Π² массивС, поэтому оцСниваСтся ΠΊΠ°ΠΊ \(T^ = \Theta(1) \). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, наибольший элСмСнт смСщаСтся Π² ΠΊΠΎΠ½Π΅Ρ† массива нСупорядочСнной части, поэтому Ρ‡Π΅Ρ€Π΅Π· N Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² массив Π² любом случаС окаТСтся отсортирован. Если ΠΆΠ΅ массив отсортирован, Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ лишь ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ сортировки Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ массив мыслСнно раздСляСтся Π½Π° ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΈ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ части. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΈΠ· нСупорядочСнной части массива выбираСтся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт ΠΈ добавляСтся Π² ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ [2].

Для поиска наимСньшСго элСмСнта нСупорядочСнной части массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция indMin, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ массив, Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ поиск. Анализ слоТности этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это сдСлано для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ min β€” количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависит ΠΎΡ‚ количСства ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… элСмСнтов: \( T^_ = \Theta(n β€” i)\).

Π£ сортировки Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ внСсти различия Π² ΠΎΡ†Π΅Π½ΠΊΡƒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ ΠΈ Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠ΅Π³ΠΎ случаСв, Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ: \(T^