JavaRush/Java Π±Π»ΠΎΠ³/Архив info.javarush/Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): аси...
Masha
41 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки ΠΈ поиска

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ Архив info.javarush
участников
Π›Π΅ΠΊΡ†ΠΈΠΈ Гарвардского курса ΠΏΠΎ основам программирования CS50 Задания CS50, week 3, Ρ‡Π°ΡΡ‚ΡŒ 1 Задания CS50, week 3, Ρ‡Π°ΡΡ‚ΡŒ 2

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

Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ β€” сСкундами ΠΈ ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ β€” нСпросто. Одна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π΅ ΠΈΠ·-Π·Π° собствСнной нСэффСктивности, Π° ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, нСсовмСстимости с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, занятости памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами… Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π²Π½Π΅ зависимости ΠΎΡ‚ срСды, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ассимптотичСской слоТности Π·Π°Π΄Π°Ρ‡ΠΈ измСряСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ О-большого. ΠŸΡƒΡΡ‚ΡŒ f(x) ΠΈ g(x) β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΊΠΎΠΉ окрСстности x0, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ g Ρ‚Π°ΠΌ Π½Π΅ обращаСтся Π² 0. Π’ΠΎΠ³Π΄Π° f являСтся Β«OΒ» большим ΠΎΡ‚ g ΠΏΡ€ΠΈ (x -> x0), Ссли сущСствуСт константа C>0, Ρ‡Ρ‚ΠΎ для всСх x ΠΈΠ· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ окрСстности Ρ‚ΠΎΡ‡ΠΊΠΈ x0 ΠΈΠΌΠ΅Π΅Ρ‚ мСсто нСравСнство |f(x)| <= C |g(x)| Π§ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ строго: f являСтся Β«OΒ» большим ΠΎΡ‚ g, Ссли сущСствуСт константа C>0, Ρ‡Ρ‚ΠΎ для всСх x > x0 f(x) <= C*g(x) НС Π±ΠΎΠΉΡ‚Π΅ΡΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния! По сути, ΠΎΠ½ΠΎ опрСдСляСт асимптотичСскоС возрастаниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° количСство Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π²Ρ…ΠΎΠ΄Π΅ растСт Π² сторону бСсконСчности. НапримСр, Π²Ρ‹ сравниваСтС сортировку массива ΠΈΠ· 1000 элСмСнтов ΠΈ 10 элСмСнтов ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ возрастёт ΠΏΡ€ΠΈ этом врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Или Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки символов ΠΏΡƒΡ‚Π΅ΠΌ посимвольного ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ 1 Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ: c - 1 a - 2 t - 3 Π•Π³ΠΎ асимптотичСская ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = О(n), Π³Π΄Π΅ n β€” количСство Π±ΡƒΠΊΠ² Π² словС. Если ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для подсчСта всСй строки, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ количСству символов. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства символов Π² строкС ΠΈΠ· 20 символов Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π²Π΄Π²ΠΎΠ΅ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΡ€ΠΈ подсчСтС количСства символов Π² Π΄Π΅ΡΡΡ‚ΠΈΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΉ строкС. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ length Π²Ρ‹ сохранили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ количСству символов Π² строкС. НапримСр, length = 1000. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки, Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ доступ ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° саму строку ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. И ΠΊΠ°ΠΊ Π±Ρ‹ ΠΌΡ‹ Π½ΠΈ мСняли Π΄Π»ΠΈΠ½Ρƒ, ΠΌΡ‹ всСгда ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС асимптотичСская ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = O(1). ΠžΡ‚ измСнСния Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Π½Π΅ мСняСтся, поиск Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π·Π° постоянноС врСмя. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся асимптотичСски постоянной. НСдостаток: Π²Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя для обновлСния Π΅Ρ‘ значСния. Если Π²Π°ΠΌ каТСтся, Ρ‡Ρ‚ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя β€” это ΠΏΠ»ΠΎΡ…ΠΎ, смССм Π·Π°Π²Π΅Ρ€ΠΈΡ‚ΡŒ: Π±Ρ‹Π²Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅. НапримСр, O(n2). Вакая запись ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ с ростом n рост Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ дСйствия) Π±ΡƒΠ΄Π΅Ρ‚ расти всё Ρ€Π΅Π·Ρ‡Π΅. Но ΠΏΡ€ΠΈ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… n Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ с асимптотичСской ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ О(n2) ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ с асимптотикой О(n). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 1 Но Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ квадратичная функция ΠΎΠ±Π³ΠΎΠ½ΠΈΡ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ, ΠΎΡ‚ этого Π½Π΅ ΡƒΠΉΡ‚ΠΈ. Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° асимптотичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” логарифмичСскоС врСмя ΠΈΠ»ΠΈ O(log n). Π‘ ростом n эта функция возрастаСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. О(log n) β€” врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ классичСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска Π² отсортированном массивС (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΎΡ€Π²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ справочник Π½Π° Π»Π΅ΠΊΡ†ΠΈΠΈ?). Массив дСлится Π½Π°Π΄Π²ΠΎΠ΅, Π·Π°Ρ‚Π΅ΠΌ выбираСтся Ρ‚Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится элСмСнт ΠΈ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ поиска Π²Π΄Π²ΠΎΠ΅, ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ элСмСнт. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 2 Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ сразу наткнСмся Π½Π° искомоС, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· наш массив Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ? Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ β€” ОмСга-большоС ΠΈΠ»ΠΈ Ξ©(n). Π’ случаС Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска = Ξ©(1) (Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° постоянноС врСмя нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива). Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° врСмя O(n) ΠΈ Ξ©(1), Ссли искомый элСмСнт β€” самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ символ β€” Ρ‚Π΅Ρ‚Π° (Θ(n)). Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ Ρ…ΡƒΠ΄ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π³Π΄Π΅ ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρƒ строки Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, поэтому ΠΏΡ€ΠΈ любой Π΅Ρ‘ Π΄Π»ΠΈΠ½Π΅ достаточно ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Для этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ Ρ…ΡƒΠ΄ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π°Π²Π½Ρ‹ соотвСтствСнно Ξ©(1) ΠΈ O(1). Π—Π½Π°Ρ‡ΠΈΡ‚, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° врСмя Θ(1).

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск

Когда Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΈΡ‰Π΅Ρ‚Π΅ страничку, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π΄Ρ€ΡƒΠ·Π΅ΠΉ Π² соцсСтях, Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚Π΅ поиск, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ ΠΎΠ±ΡƒΠ²ΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. Π’Ρ‹ навСрняка Π·Π°ΠΌΠ΅Ρ‡Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ сильно влияСт Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅. Если Ρƒ вас всС Ρ€ΡƒΠ±Π°ΡˆΠΊΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π² ΡˆΠΊΠ°Ρ„Ρƒ, Π½Π°ΠΉΡ‚ΠΈ срСди Π½ΠΈΡ… Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ срСди разбросанных Π±Π΅Π· систСмы ΠΏΠΎ всСй ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅. Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск β€” способ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска, ΠΎΠ΄ΠΈΠ½ Π·Π° ΠΎΠ΄Π½ΠΈΠΌ. Когда Π²Ρ‹ пСрСсматриваСтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π² Google свСрху Π²Π½ΠΈΠ·, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск. ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠΏΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ список чисСл: 2 4 0 5 3 7 8 1 И Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ 0. ΠœΡ‹ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌ сразу, Π½ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Она Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ с Π½Π°Ρ‡Π°Π»Π° списка ΠΈ Π²ΠΈΠ΄ΠΈΡ‚ число 2. Π—Π°Ρ‚Π΅ΠΌ провСряСт, 2=0? Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, поэтому ΠΎΠ½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ символу. Π’Π°ΠΌ Π΅Ρ‘ Ρ‚ΠΎΠΆΠ΅ ΠΆΠ΄Π΅Ρ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Π°, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΡƒΠΆΠ½ΠΎΠ΅ число. ПсСвдокод Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ поиска: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 3 Ѐункция linearSearch ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° β€” ΠΊΠ»ΡŽΡ‡ key ΠΈ массив array[].ΠšΠ»ΡŽΡ‡ β€” искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ key = 0. Массив β€” список чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. Если ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ нашли, функция Π²Π΅Ρ€Π½Π΅Ρ‚ -1 (ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² массивС Π½Π΅Ρ‚). Если ΠΆΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск Π½Π°ΠΉΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт, Ρ‚ΠΎ функция Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится искомый элСмСнт Π² массивС. Π’ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ поискС Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для любого массива, нСзависимо ΠΎΡ‚ порядка элСмСнтов: ΠΌΡ‹ всё Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΏΠΎ всСму массиву. Π­Ρ‚ΠΎ ΠΆΠ΅ являСтся ΠΈ Π΅Π³ΠΎ ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒΡŽ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ число 198 Π² массивС ΠΈΠ· 200 чисСл, отсортированных ΠΏΠΎ порядку, Ρ†ΠΈΠΊΠ» for ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ 198 шагов. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 4 Π’Ρ‹, вСроятно, ΡƒΠΆΠ΅ догадались, ΠΊΠ°ΠΊΠΎΠΉ способ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ для отсортированного массива?

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ список отсортированных ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ диснССвских Π³Π΅Ρ€ΠΎΠ΅Π², ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Микки ΠœΠ°ΡƒΡΠ°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 5 Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄ΠΎΠ»Π³ΠΎ. А Ссли Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Β«ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ разрывания справочника ΠΏΠΎΠΏΠΎΠ»Π°ΠΌΒ», ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ сразу Π½Π° Jasmine, ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ смСло ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ списка, понимая, Ρ‡Ρ‚ΠΎ Mickey Ρ‚Π°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 6 По этому ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ отбрасываСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ Ρ‚Π°ΠΊΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, ΠΌΡ‹ Π½Π°ΠΉΠ΄Π΅ΠΌ Микки Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° ΠΏΠ°Ρ€Ρƒ шагов. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 7 Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ число 144. Π”Π΅Π»ΠΈΠΌ список ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ, ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π½Π° число 13. ΠžΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ, большС ΠΈΠ»ΠΈ мСньшС искомоС число, Ρ‡Π΅ΠΌ 13. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 8 13 < 144, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ находится Π»Π΅Π²Π΅Π΅ 13 ΠΈ само это число. Π’Π΅ΠΏΠ΅Ρ€ΡŒ наш список поиска выглядит Ρ‚Π°ΠΊ: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 9 Π’ΡƒΡ‚ Ρ‡Ρ‘Ρ‚Π½ΠΎΠ΅ число элСмСнтов, поэтому Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ «срСднСС» (Π±Π»ΠΈΠΆΠ΅ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ†Ρƒ). Допустим, ΠΌΡ‹ ΠΈΠ·Π±Ρ€Π°Π»ΠΈ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ близости ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, наша «сСрСдина» = 55. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 10 55 < 144. ΠœΡ‹ снова отбрасываСм Π»Π΅Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ списка. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ для нас, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ срСднСС число ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ 144. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 11 ΠœΡ‹ нашли 144 Π² массивС ΠΈΠ· 13 элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска всСго Π·Π° Ρ‚Ρ€ΠΈ шага. Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ситуации справился Π±Ρ‹ Π°ΠΆ Π·Π° 12 шагов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство элСмСнтов Π² массивС Π²Π΄Π²ΠΎΠ΅, ΠΎΠ½ Π½Π°ΠΉΠ΄Π΅Ρ‚ искомоС Π·Π° асимптотичСскоС врСмя О(log n), Π³Π΄Π΅ n – количСство элСмСнтов Π² спискС. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π² нашСм случаС асимптотичСскоС врСмя = O(log 13) (это Ρ‡ΡƒΡ‚ΡŒ большС Ρ‚Ρ€Ρ‘Ρ…). ПсСвдокод Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 12 Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ 4 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: искомоС key, массив Π΄Π°Π½Π½Ρ‹Ρ… array [], Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится искомоС, min ΠΈ max β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° максимальноС ΠΈ минимальноС число Π² массивС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ смотрим Π½Π° Π΄Π°Π½Π½ΠΎΠΌ шагС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΄Π°Π½Π° такая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 13 Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ΄ Π΄Π°Π»Π΅Π΅. midpoint β€” наша сСрСдина массива. Она зависит ΠΎΡ‚ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ находится ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ нашли сСрСдину, провСряСм, мСньшС Π»ΠΈ ΠΎΠ½Π° нашСго числа key. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 14 Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ key Ρ‚Π°ΠΊΠΆΠ΅ большС, Ρ‡Π΅ΠΌ любоС ΠΈΠ· чисСл Π»Π΅Π²Π΅Π΅ сСрСдины, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ снова, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ наш min = midpoint + 1. Если окаТСтся, Ρ‡Ρ‚ΠΎ key < midpoint, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ само это число ΠΈ всС числа, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ справа ΠΎΡ‚ Π½Π΅Π³ΠΎ. И ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΠΏΠΎ массиву ΠΎΡ‚ числа min ΠΈ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ значСния (midpoint – 1). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 15 НаконСц, Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Π²Π΅Ρ‚ΠΊΠ°: Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² midpoint Π½Π΅ большС ΠΈ Π½Π΅ мСньшС, Ρ‡Π΅ΠΌ key, Π΅ΠΌΡƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ остаСтся, ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ искомым числом. Π•Π³ΠΎ ΠΌΡ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 16 НаконСц, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ искомоС число ΠΈ вовсС отсутствуСт Π² массивС. Для ΡƒΡ‡Ρ‘Ρ‚Π° этого случая Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 17 И Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ (-1), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ нашли. Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ для Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ массив Π±Ρ‹Π» отсортирован. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ нСотсортированный массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΊΠΈΠΉ элСмСнт, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° дСйствия:
  1. ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск
  2. Π‘ΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ список всСгда отсортированным ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡƒΠ±ΠΈΡ€Π°Π½ΠΈΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ элСмСнтов.
Один ΠΈΠ· способов хранСния списков отсортированными считаСтся Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ поиска. Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅) Π΄Π΅Ρ€Π΅Π²ΠΎ поиска β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ трСбованиям:
  • Оно являСтся Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ (структурой Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру β€” ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ (Π»ΠΈΡΡ‚ΡŒΡ), связанныС Β«Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈΒ» ΠΈΠ»ΠΈ Ρ€Π΅Π±Ρ€Π°ΠΌΠΈ Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ²)
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΈΠΌΠ΅Π΅Ρ‚ 0, 1 ΠΈΠ»ΠΈ 2 ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°
  • Оба ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° β€” Π»Π΅Π²ΠΎΠ΅ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ΅ β€” ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ поиска.
  • Π£ всСх ΡƒΠ·Π»ΠΎΠ² Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° X значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… мСньшС, Π½Π΅ΠΆΠ΅Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… самого ΡƒΠ·Π»Π° X.
  • Π£ всСх ΡƒΠ·Π»ΠΎΠ² ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° X значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… большС Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½ΠΎ, Π½Π΅ΠΆΠ΅Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… самого ΡƒΠ·Π»Π° X.
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 18 Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΊΠΎΡ€Π΅Π½ΡŒ «программистского» Π΄Π΅Ρ€Π΅Π²Π°, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, находится свСрху. КаТдая ячСйка называСтся Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ, Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ соСдинСны Ρ€Π΅Π±Ρ€Π°ΠΌΠΈ. ΠšΠΎΡ€Π΅Π½ΡŒ Π΄Π΅Ρ€Π΅Π²Π° β€” ячСйка с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 13. Π›Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ 3 Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ снизу: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 19 НашС Π΄Π΅Ρ€Π΅Π²ΠΎ соотвСтствуСт всСм трСбованиям ΠΊ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΏΡ€Π°Π²ΠΎΠ΅ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния большиС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Оба Π»Π΅Π²Ρ‹Π΅ ΠΈ ΠΏΡ€Π°Π²Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΡŒΡ сами ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ. Бпособ построСния Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° β€” Π½Π΅ СдинствСнный: Π½ΠΈΠΆΠ΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€Π° чисСл, ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 20 Вакая структура ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ поиск: минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ, двигаясь ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²Π»Π΅Π²ΠΎ-Π²Π½ΠΈΠ· ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 21 Если Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ максимальноС число β€” ΠΈΠ΄Π΅ΠΌ ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²Π½ΠΈΠ· ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ. НахоТдСниС числа, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ являСтся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ вСсьма простоС. ΠœΡ‹ спускаСмся ΠΎΡ‚ корня Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, большС ΠΈΠ»ΠΈ мСньшС наша Π²Π΅Ρ€ΡˆΠΈΠ½Π° искомой. Π’Π°ΠΊ, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ число 89 ΠΌΡ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡƒΡ‚ΡŒ: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 22 Π•Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ числа Π² порядкС сортировки. НапримСр, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ вывСсти всС числа Π² порядкС возрастания, Π±Π΅Ρ€Π΅ΠΌ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈ начиная с самой Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈΠ΄Π΅ΠΌ Π½Π°Π²Π΅Ρ€Ρ…. ΠŸΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ‚ΠΎΠΆΠ΅ просто. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ структурС. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 7. ИдСм ΠΊ ΠΊΠΎΡ€Π½ΡŽ, ΠΈ провСряСм. Число 7 < 13, поэтому ΠΈΠ΄Π΅ΠΌ Π²Π»Π΅Π²ΠΎ. Π’Π°ΠΌ Π²ΠΈΠ΄ΠΈΠΌ 5, ΠΈ ΠΈΠ΄Π΅ΠΌ Π²ΠΏΡ€Π°Π²ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 7 > 5. Π”Π°Π»ΡŒΡˆΠ΅ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 7 > 8 ΠΈ 8 Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², ΠΌΡ‹ конструируСм Π²Π΅Ρ‚ΠΊΡƒ ΠΎΡ‚ 8 Π²Π»Π΅Π²ΠΎ ΠΈ Π½Π° Π½Π΅Ρ‘ цСпляСм 7. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 23 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 24 Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π°, Π½ΠΎ это нСсколько слоТнСС. Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… сцСнария для удалСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡Π΅ΡΡ‚ΡŒ.
  1. Π‘Π°ΠΌΡ‹ΠΉ простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ². НапримСр, число 7, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΡ‹ просто ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ с этим числом ΠΈ удаляСм Π΅Π³ΠΎ.
  2. Π£ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π°-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, Π½ΠΎ Π΅Ρ‘ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊ Β«Π΄Π΅Π΄ΡƒΡˆΠΊΠ΅Β», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ произрастал Π΅Ρ‘ нСпосрСдствСнный ΠΏΡ€Π΅Π΄ΠΎΠΊ. НапримСр, ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π΄Π΅Ρ€Π΅Π²Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ число 3. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, Π΅Ρ‘ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, вмСстС со всСм ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ присоСдиняСм ΠΊ 5. Π­Ρ‚ΠΎ дСлаСтся просто, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, слСва ΠΎΡ‚ 5, Π±ΡƒΠ΄ΡƒΡ‚ мСньшС Ρ‡Π΅ΠΌ это число (ΠΈ мСньшС, Ρ‡Π΅ΠΌ удалённая Ρ‚Ρ€ΠΎΠΉΠΊΠ°). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 24
  3. Π‘Π°ΠΌΡ‹ΠΉ слоТный случай β€” ΠΊΠΎΠ³Π΄Π° Ρƒ удаляСмой Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ спрятано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… мСстами, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²ΡƒΡ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², Ρ‚ΠΎΠ³Π΄Π° Π΅Ρ‘ Π»Π΅Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ· нашСго Π΄Π΅Ρ€Π΅Π²Π° ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ 13. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΡ‰Π΅ΠΌ самоС Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ ΠΊ 13 число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅Π³ΠΎ большС. Π­Ρ‚ΠΎ 21. МСняСм 21 ΠΈ 13 мСстами ΠΈ удаляСм 13. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 25 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 27
Π•ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ способы ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, ΠΎΠ΄Π½ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ· отсортированного списка? Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 26 ВсС числа просто Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² ΠΏΡ€Π°Π²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Если ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ число, Ρƒ нас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π°, ΠΊΠ°ΠΊ просто ΠΈΠ΄Ρ‚ΠΈ ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π²Π½ΠΈΠ·. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 27 Π­Ρ‚ΠΎ Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π±ΠΎΠ»Π΅Π΅ слоТныС. Но ΠΈΡ… ΠΌΡ‹ ΠΏΠΎΠΊΠ° Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с построСниСм Π΄Π΅Ρ€Π΅Π²Π° ΠΈΠ· отсортированного списка ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Алгоритмы сортировки

Π•ΡΡ‚ΡŒ массив чисСл. НуТно Π΅Π³ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для простоты Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сортируСм Ρ†Π΅Π»Ρ‹Π΅ числа Π² порядкС возрастания (ΠΎΡ‚ мСньшСго ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ). БущСствуСт нСсколько извСстных способов ΠΏΡ€ΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ этот процСсс. Плюс, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ„Π°Π½Ρ‚Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ‚Π΅ΠΌΡƒ ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 28 Основная идСя β€” Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ наш список Π½Π° Π΄Π²Π΅ части, ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈ Π½Π΅ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½ΠΎΠ²ΠΎΠ΅ число пСрСмСщаСтся ΠΈΠ· нСотсортированной части Π² ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ, ΠΈ Ρ‚Π°ΠΊ ΠΏΠΎΠΊΠ° всС числа Π½Π΅ окаТутся Π² отсортированной части.
  1. Находим минимальноС нСотсортированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  2. МСняСм мСстами это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ нСотсортированным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ставя Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² ΠΊΠΎΠ½Π΅Ρ† отсортированного массива.
  3. Если ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ нСотсортированныС значСния, возвращаСмся ΠΊ ΡˆΠ°Π³Ρƒ 1.
На ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС всС значСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСотсортированными. НазовСм Π½Π΅ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ β€” Unsorted, Π° ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ β€” Sorted (это просто английскиС слова, ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΡ‹ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Sorted β€” Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ Β«ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒΒ» ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 29 Находим минимальноС число Π² нСотсортированной части массива (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π° этом шагС β€” Π²ΠΎ всСм массивС). Π­Ρ‚ΠΎ число 2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ мСняСм Π΅Π³ΠΎ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ срСди нСотсортированных ΠΈ ставим Π΅Π³ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ† отсортированного массива(Π½Π° этом шагС β€” Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто). На этом шагС это ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число Π² массивС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 3. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 30 Π¨Π°Π³ Π²Ρ‚ΠΎΡ€ΠΎΠΉ. На число 2 ΠΌΡ‹ Π½Π΅ смотрим, ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ Π² отсортированном подмассивС. НачинаСм ΠΈΡΠΊΠ°Ρ‚ΡŒ минимальноС, начиная со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта, это 5. УбСТдаСмся, Ρ‡Ρ‚ΠΎ 3 β€” минимальноС срСди нСотсортированных, 5 β€” ΠΏΠ΅Ρ€Π²ΠΎΠ΅ срСди нСотсортированных. МСняСм ΠΈΡ… мСстами ΠΈ прибавляСм 3 ΠΊ отсортированному подмассиву. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 31 На Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ шагС ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² нСотсортированном подмассивС самоС малСнькоС число β€” 4. МСняСм Π΅Π³ΠΎ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ числом срСди нСотсортированных β€” 5. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 32 На Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ шагС ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² нСотсортированном массивС минимальноС число β€” 5. МСняСм Π΅Π³ΠΎ с 6 ΠΈ прибавляСм ΠΊ отсортированному подмассиву. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 33 Когда срСди нСотсортированных остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ число (наибольшСС), это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ вСсь массив отсортирован! Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 34 Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит рСализация массива Π² ΠΊΠΎΠ΄Π΅. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 35 Π’ ΠΎΠ±ΠΎΠΈΡ…, самом Π»ΡƒΡ‡ΡˆΠ΅ΠΌ ΠΈ самом Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ нСотсортированный элСмСнт, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом нСотсортированного массива, ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Но Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ вСсь список, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ. ΠœΠ΅Π½ΡΠ΅Ρ‚ Π»ΠΈ это ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°? На ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС для массива ΠΈΠ· 5 элСмСнтов ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ 4 сравнСния, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” 3, Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ β€” 2. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ количСство сравнСний, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ всС эти числа. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сумму Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, оТидаСмая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ ΠΈ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС β€” Θ(n2). НС самый эффСктивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ! Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ ΠΈ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π΄Π°Π½Π½Ρ‹Ρ… β€” Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ.
ΠŸΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Π°Ρ сортировка
Алгоритм Ρƒ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировки β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ…. ИдСм вдоль всСго массива ΠΈ сравниваСм 2 сосСдних элСмСнта. Если ΠΎΠ½ΠΈ Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС, мСняСм ΠΈΡ… мСстами. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅ окаТСтся («всплывСт») самый малСнький элСмСнт (Ссли ΠΌΡ‹ сортируСм Π² порядкС убывания). ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС Π±Ρ‹Π» ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½. Π”Π°Π²Π°ΠΉΡ‚Π΅ отсортируСм массив. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 36 Π¨Π°Π³ 1: ΠΈΠ΄Π΅ΠΌ ΠΏΠΎ массиву. Алгоритм Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… элСмСнтов, 8 ΠΈ 6 ΠΈ провСряСт, находятся Π»ΠΈ ΠΎΠ½ΠΈ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС. 8 > 6, поэтому мСняСм ΠΈΡ… мСстами. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ смотрим Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнты, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это 8 ΠΈ 4. Из Ρ‚Π΅Ρ… ΠΆΠ΅ сообраТСний мСняСм ΠΈΡ… мСстами. Π’ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π· сравниваСм 8 ΠΈ 2. Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Ρ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° (8, 6), (8, 4), (8, 2). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 8 «всплыло» Π² ΠΊΠΎΠ½Π΅Ρ† списка Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 37 Π¨Π°Π³ 2: мСняСм мСстами (6,4) ΠΈ (6,2). 6 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° прСдпослСднСй ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΈ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с ΡƒΠΆΠ΅ отсортированным «хвостом» списка. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 38 Π¨Π°Π³ 3: мСняСм мСстами 4 ΠΈ 2. Π§Π΅Ρ‚Π²Π΅Ρ€ΠΊΠ° «всплываСт» Π½Π° своС Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ΅ мСсто. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 39 Π¨Π°Π³ 4: проходимся ΠΏΠΎ массиву, Π½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°ΠΌ ΡƒΠΆΠ΅ Π½Π΅Ρ‡Π΅Π³ΠΎ. Π­Ρ‚ΠΎ сигнализируСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ массив ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отсортирован. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 40 А это β€” ΠΊΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π‘ΠΈ! Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 43 ΠŸΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Π°Ρ сортировка ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π° врСмя O(n2) Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС (всС числа стоят Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ n шагов Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΠΆΠ΅ n. На самом Π΄Π΅Π»Π΅, ΠΊΠ°ΠΊ ΠΈ Π² случаС с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ, врСмя Π±ΡƒΠ΄Π΅Ρ‚ нСсколько мСньшС (n2/2 – n/2), Π½ΠΎ этим ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Ρ‡ΡŒ. Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС (Ссли всС элСмСнты ΡƒΠΆΠ΅ стоят Π½Π° своСм мСстС), ΠΌΡ‹ справимся Π·Π° n шагов, Ρ‚.Π΅. Ξ©(n), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ массиву ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС элСмСнты стоят Π½Π° своих мСстах (Ρ‚.Π΅. Π΄Π°ΠΆΠ΅ n-1 элСмСнтов).
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° вставками
Основная идСя этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° β€” Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нашСго массива Π½Π° Π΄Π²Π΅ части, ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈ Π½Π΅ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° число ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ нСотсортированной ΠΊ отсортированной части. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 41 Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сортировка вставкой. Π”ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ, всС элСмСнты ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ нСотсортированными. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 42 Π¨Π°Π³ 1. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ нСотсортированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (3) ΠΈ вставим Π΅Π³ΠΎ Π² отсортированный подмассив. На этом шагС вСсь отсортированный подмассив, Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ этой самой Ρ‚Ρ€ΠΎΠΉΠΊΠΎΠΉ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 43 Π¨Π°Π³ 2. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 3 > 5, ΠΌΡ‹ вставим 5 Π² отсортированный подмассив справа ΠΎΡ‚ 3. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 44 Π¨Π°Π³ 3. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ вставкой числа 2 Π² наш отсортированный массив. Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ 2 со значСниями справа Π½Π°Π»Π΅Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 2 < 5 ΠΈ 2 < 3 ΠΈ ΠΌΡ‹ дошли Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° отсортированного подмассива. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ 2 слСва ΠΎΡ‚ 3. Для этого ΠΏΠΎΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ 3 ΠΈ 5 Π²ΠΏΡ€Π°Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ появилось мСсто для Π΄Π²ΠΎΠΉΠΊΠΈ ΠΈ вставляСм Π΅Ρ‘ Π² Π½Π°Ρ‡Π°Π»ΠΎ массива. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 45 Π¨Π°Π³ 4. Нам ΠΏΠΎΠ²Π΅Π·Π»ΠΎ: 6 > 5, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ это число сразу Π·Π° числом 5. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 46 Π¨Π°Π³ 5. 4 < 6 ΠΈ 4 < 5, Π½ΠΎ 4 > 3. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ 4 Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ справа ΠΎΡ‚ 3. Π‘Π½ΠΎΠ²Π°, ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΏΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ 5 ΠΈ 6 Π²ΠΏΡ€Π°Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»Π°ΠΊΡƒΠ½Ρƒ для 4. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 47 Π“ΠΎΡ‚ΠΎΠ²ΠΎ! ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ: Π‘Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ нСотсортированный элСмСнт n ΠΈ сравниваСм Π΅Π³ΠΎ со значСниями Π² отсортированном подмассивС справа Π½Π°Π»Π΅Π²ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ для n (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мСньшС, Ρ‡Π΅ΠΌ n). Π—Π°Ρ‚Π΅ΠΌ сдвигаСм всС отсортированныС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся справа ΠΎΡ‚ этого числа Π²ΠΏΡ€Π°Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΎΡΡŒ мСсто для нашСго n, ΠΌ вставляСм Π΅Π³ΠΎ Ρ‚ΡƒΠ΄Π°, Ρ‚Π΅ΠΌ самым Ρ€Π°ΡΡˆΠΈΡ€ΡΡ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ массива. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ нСотсортированного элСмСнта n Π½ΡƒΠΆΠ½ΠΎ:
  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСсто Π² отсортированной части массива, ΠΊΡƒΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ n
  2. Π‘Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ отсортированныС элСмСнты Π²ΠΏΡ€Π°Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π°ΠΊΡƒΠ½Ρƒ для n
  3. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ n Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π²ΡˆΡƒΡŽΡΡ Π»Π°ΠΊΡƒΠ½Ρƒ Π² отсортированной части массива.
А Π²ΠΎΡ‚ ΠΈ ΠΊΠΎΠ΄! Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сортировки. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 48
АсимптотичСская ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
Π’ самом ΠΏΠ»ΠΎΡ…ΠΎΠΌ случаС ΠΌΡ‹ сдСлаСм ΠΎΠ΄Π½ΠΎ сравнСниС со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ элСмСнтом, Π΄Π²Π° сравнСния с Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ наша ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π²Π½Π° O(n2). Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠΆΠ΅ отсортированным массивом. ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ строим слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π±Π΅Π· вставок ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ элСмСнтов Π·Π°ΠΉΠΌΠ΅Ρ‚ врСмя Ξ©(n).
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слияниСм
Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ β€” рСкурсивный, ΠΎΠ½ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ сортировки Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ большой Π·Π°Π΄Π°Ρ‡ΠΈ. Основная идСя β€” Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нСотсортированного массива Π½Π° Π΄Π²Π΅ части ΠΈ сортировка ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΊ ΠΏΠΎ рСкурсивному ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 49 Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ n элСмСнтов для сортировки. Если n < 2, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ сортировку, ΠΈΠ½Π°Ρ‡Π΅ β€” сортируСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π²ΡƒΡŽ ΠΈ ΠΏΡ€Π°Π²ΡƒΡŽ части массива, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡ… объСдиняСм. Π”Π°Π²Π°ΠΉΡ‚Π΅ отсортируСм массив Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 50 Π”Π΅Π»ΠΈΠΌ Π΅Π³ΠΎ Π½Π° Π΄Π²Π΅ части, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ подмассивы Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ 1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ отсортированы. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 51 Π”Π²Π° отсортированных подмассива ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π·Π° врСмя O(n) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°: удаляСм мСньшСС ΠΈΠ· чисСл Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ подмассива ΠΈ вставляСм Π΅Π³ΠΎ Π² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ массив. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ закончатся всС элСмСнты. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 52 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 56 Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слияниСм Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ O(nlog n) для всСх случаСв. Пока ΠΌΡ‹ Π΄Π΅Π»ΠΈΠΌ массивы Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ рСкурсии ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ log n. Π—Π°Ρ‚Π΅ΠΌ, для слияния подмассивов Π½ΡƒΠΆΠ½ΠΎ всСго n сравнСний. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, O(nlog n). Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ Ρ…ΡƒΠ΄ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ для сортировки слияниСм β€” ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° = Θ(nlog n). Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ β€” самый эффСктивный срСди рассмотрСнных. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 53 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CS50 (Week 3, Π»Π΅ΠΊΡ†ΠΈΠΈ 7 ΠΈ 8): асимптотичСская нотация, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки  ΠΈ поиска - 58
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (2)
  • популярныС
  • Π½ΠΎΠ²Ρ‹Π΅
  • старыС
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
Graydee
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 5
29 сСнтября 2016, 04:00
Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ кусок ΠΏΡ€ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ΠΎΠΌ. Π’ практичСских заданиях ΠΎ Π½ΠΈΡ… ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ сюда, Π° Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π° сайтС Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… Π½Π΅ ΠΌΠΎΠ³Ρƒ.
sibkedr
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 9
3 ноября 2016, 21:50
Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° английском Ρ‚ΡƒΡ‚ http://cdn.cs50.net/2015/fall/psets/3/pset3/pset3.html

ΠΈΠ»ΠΈ Π½Π° ΡŽΡ‚ΡƒΠ±Π΅ https://youtu.be/-G_klBQLgdc