Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚-ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΠΊ. ΠŸΡƒΡ‚ΡŒ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΌΠ°ΡΡ‚Π΅Ρ€ΡŒΡ ΠΊ мастСру». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 46

Автор Π­Π½Π΄Ρ€ΡŽ Π₯Π°Π½Ρ‚

На рисункС 6.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ нСсколько ΠΎΠ±Ρ‰ΠΈΡ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ O(), с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ, ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сравниваСтся врСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. Из Π½Π΅Π³ΠΎ ясно, Ρ‡Ρ‚ΠΎ всС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ быстро Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ контроля, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· O(n^2).


Рис. 6.1. ВрСмя выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²


НСкоторыС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ обозначСния О-большоС

O(1) ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнту массива, простыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹)

O(lg(n)) ЛогарифмичСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск) [lg(n) β€“ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ log2(n)]

O(n) ЛинСйная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск)

O(n lg(n)) Π­Ρ‚Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ (срСднСС врСмя быстрой сортировки, ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠΉ сортировки)

O(n^2) ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (выборочная сортировка ΠΈ сортировка Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ)

O(n^3) ΠšΡƒΠ±ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ n*n)

O(C^n) Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (Π·Π°Π΄Π°Ρ‡Π° ΠΎ коммивояТСрС, Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π°)


ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ 100 записСй Π·Π° 1 ΡΠ΅ΠΊ. Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΅ΠΉ потрСбуСтся для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 1000 записСй? Если ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся O(1), Ρ‚ΠΎ это врСмя остаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 1 ΡΠ΅ΠΊ. Если ΠΎΠ½Π° являСтся O(lg(n)), Ρ‚ΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ потрСбуСтся ΠΎΠΊΠΎΠ»ΠΎ 3 ΡΠ΅ΠΊ. ΠŸΡ€ΠΈ O(n) врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ возрастаСт Π΄ΠΎ 10 ΡΠ΅ΠΊ., Π° ΠΏΡ€ΠΈ O(nlg(n)) составит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 33 ΡΠ΅ΠΊ. Если Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ ΠΈ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся O(n^2), Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Π΄ΠΎΡ…Π½ΡƒΡ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 100 ΡΠ΅ΠΊ., ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ сдСлаСт своС Π΄Π΅Π»ΠΎ. Ну Π° Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ O(2^n), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π²Π°Ρ€ΠΈΡ‚ΡŒ Ρ‡Π°ΡˆΠ΅Ρ‡ΠΊΡƒ ΠΊΠΎΡ„Π΅ – ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· 10263 Π³ΠΎΠ΄Π°. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ происходит ΠΊΠΎΠ½Π΅Ρ† свСта.

БистСма ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ O() Π½Π΅ примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ; Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для прСдставлСния Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсов, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π΅ΠΊΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ. НапримСр, ΠΎΠ½Π° часто являСтся ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ расхода памяти (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 35).

ΠžΡ†Π΅Π½ΠΊΠ° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла

МоТно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ порядок ΠΌΠ½ΠΎΠ³ΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла.

β€’ ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹. Если простой Ρ†ΠΈΠΊΠ» выполняСтся ΠΎΡ‚ 1 Π΄ΠΎ n, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, скорСС всСго, являСтся O(n) β€“ врСмя находится Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ зависимости ΠΎΡ‚ n. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ этого ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ поиск, поиск максимального элСмСнта Π² массивС ΠΈ гСнСрация ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы.

β€’ Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹. Если Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Ρ‚ΠΎ ваш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ становится O(m*n), Π³Π΄Π΅ m ΠΈ n – ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ этих Π΄Π²ΡƒΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это свойствСнно простым Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ сортировки, Ρ‚ΠΈΠΏΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировки, Π³Π΄Π΅ внСшний Ρ†ΠΈΠΊΠ» ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ просматриваСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» опрСдСляСт мСстонахоТдСниС этого элСмСнта Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ массивС. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки Ρ‡Π°Ρ‰Π΅ всСго стрСмятся ΠΊ O(n^2).

β€’ ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска. Если Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄Π΅Π»ΠΈΡ‚ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Π½Π°Π±ΠΎΡ€ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ рассматриваСт всякий Ρ€Π°Π· Π² Ρ†ΠΈΠΊΠ»Π΅, Ρ‚ΠΎ скорСС всСго ΠΎΠ½ логарифмичСский O(lg(n)) (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 37). Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск Π² упорядочСнном спискС, ΠΎΠ±Ρ…ΠΎΠ΄ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΈ поиск ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ установлСнного Π±ΠΈΡ‚Π° Π² машинном словС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ O(lg(n)).

β€’ Π Π°Π·Π΄Π΅Π»ΡΠΉ ΠΈ властвуй. Алгоритмы, Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ нСзависимо с двумя ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΠΌΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой O(nlg(n)). ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрой сортировки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»ΠΈΡ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ массив ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ сортировку Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½. Π₯отя тСхничСски ΠΎΠ½ ΠΈ являСтся O(n^2), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ упорядочСнных Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ срСднСС врСмя быстрой сортировки составляСт O(nlg(n)).

β€’ ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈΠΊΠ°. ΠŸΡ€ΠΈ использовании Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, связанных с пСрСстановкой, врСмя ΠΈΡ… выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ·-ΠΏΠΎΠ΄ контроля.

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎ пСрСстановкС Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² (сущСствуСт 5! = 5*4*3*2*1 = 120 пСрСстановок Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 1 Π΄ΠΎ 5). Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π·Π° основу врСмя выполнСния ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для пяти элСмСнтов; для ΡˆΠ΅ΡΡ‚ΠΈ элСмСнтов Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ потрСбуСтся Π² ΡˆΠ΅ΡΡ‚ΡŒ Ρ€Π°Π· большС, Π° для сСми – Π² 42. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ этого ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… извСстных слоТных Π·Π°Π΄Π°Ρ‡ – ΠΎ коммивояТСрС, ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ€Π° чисСл Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сумма ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° ΠΈ Ρ‚. Π΄. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях для сокращСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… областях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ эвристичСскиС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹.

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

ΠœΠ°Π»ΠΎΠ²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² своСй ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π΅ Π²Π°ΠΌ придСтся Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ сортировки. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, входящиС Π² стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, навСрняка Π±Π΅Π· особых усилий ΠΏΡ€Π΅Π²Π·ΠΎΠΉΠ΄ΡƒΡ‚ написанноС Π²Π°ΠΌΠΈ. Но основныС Ρ‚ΠΈΠΏΡ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², описанныС Π²Ρ‹ΡˆΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ. Π’ΠΎ всСх случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ простой Ρ†ΠΈΠΊΠ», Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ О(n). Если ΠΆΠ΅ этот Ρ†ΠΈΠΊΠ» содСрТит Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ», Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ О(m*n). Π’Ρ‹ обязаны Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом: Π° насколько Π²Π΅Π»ΠΈΠΊΠΈ эти значСния? Если эти значСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ свСрху, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ потрСбуСтся Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если эти Ρ†ΠΈΡ„Ρ€Ρ‹ зависят ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ количСства записСй Π² запускаСмом Π½Π° Π½ΠΎΡ‡ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ»ΠΈ количСства Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ Π² спискС пСрсоналий), Ρ‚ΠΎ стоит ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ влияниС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл Π½Π° врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ памяти.


Подсказка 45: ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ порядок Π²Π°ΡˆΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²


БущСствуСт нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Если Π΅ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ O(n^2), ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ "раздСляй ΠΈ властвуй", Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя выполнСния Π΄ΠΎ O(nlg(n)).

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

Π‘Ρ‚ΠΎΠΈΡ‚ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈ ΠΌΠ°Π»Ρ‹Ρ… значСниях n простой Ρ†ΠΈΠΊΠ» O(n^2) ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ слоТный О(nlg(n)), особСнно Ссли послСдний содСрТит рСсурсоСмкий Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ».

Говоря ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎ практичСских сообраТСниях. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с нСбольшими массивами Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ врСмя выполнСния возрастаСт Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. Но Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй, Ρ‚ΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ врСмя выполнСния Ρ€Π΅Π·ΠΊΠΎ увСличиваСтся, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ систСма Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Β«Π±ΡƒΠΊΡΠΎΠ²Π°Ρ‚ΡŒΒ». ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сортировки со случайными Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒΡΡ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅ с упорядочСнным Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ массивом. ΠŸΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π°Π·Ρƒ. ПослС всСх ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΎΡ†Π΅Π½ΠΎΠΊ СдинствСнной опрСдСляСмой Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ характСристикой являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях эксплуатации ΠΈ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ [38]. Из этого слСдуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ подсказка.


Подсказка 46: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ваши ΠΎΡ†Π΅Π½ΠΊΠΈ


Если слоТно Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ врСмя, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, сколько Ρ€Π°Π· выполнялся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΈ постройтС Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ этого количСства ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π΄Π°Π½Π½Ρ‹Ρ….

Π›ΡƒΡ‡ΡˆΠ΅Π΅ – Π²Ρ€Π°Π³ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠ°ΡΠ°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π΄Ρ€Π°Π³ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ врСмя Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, всСгда Π΅ΡΡ‚ΡŒ смысл ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся "ΡƒΠ·ΠΊΠΈΠΌ мСстом".

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹, относящиСся ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅:

β€’ ΠžΡ†Π΅Π½ΠΊΠ°