Skip to content

sworog/grokking-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠΠ΄ΠΈΡ‚ΡŒΡ Π‘Ρ…Π°Ρ€Π³Π°Π²Π°. Π“Ρ€ΠΎΠΊΠ°Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. ΠšΠΎΠ½ΡΠΏΠ΅ΠΊΡ‚ ΠΊΠ½ΠΈΠ³ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π° java script.

Π“Π»Π°Π²Π° 1. Знакомство с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск

Алгоритм Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ отсортированный список элСмСнтов. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ искомого элСмСнта ΠΈΠ»ΠΈ null.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΈΠ³Ρ€Π° "ΡƒΠ³Π°Π΄Π°ΠΉ число". Π—Π°Π³Π°Π΄Π°Π½ΠΎ число ΠΎΡ‚ 1 Π΄ΠΎ 100. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ возвращаСтся ΠΎΡ‚Π²Π΅Ρ‚: "ΠΌΠ°Π»ΠΎ", "ΠΌΠ½ΠΎΠ³ΠΎ" ΠΈΠ»ΠΈ "ΡƒΠ³Π°Π΄Π°Π»". ΠŸΠ»ΠΎΡ…ΠΎΠΉ способ – ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС числа подряд. ΠŸΡ€ΠΈ самом ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ сцСнарии потрСбуСтся 100 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ способ – Π½Π°Ρ‡Π½Π΅ΠΌ с 50. Если ΠΌΠ°Π»ΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ 75. Если ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ 63 ΠΈ Ρ‚Π΄, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². КакоС Π±Ρ‹ число Π½Π΅ Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π·Π° 7 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ.

ΠŸΡ€ΠΈ простом поискС ΠΈΠ· 240 000 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ 240 000 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ. ΠŸΡ€ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ - максимум 18. Для списка ΠΈΠ· n элСмСнтов простой поиск Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ n шагов, Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ log2n шагов.

Π›ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ ΠΏΠΎ смыслу ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ возвСдСнию Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ. Π›ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ ΠΏΠΎ основанию 10 ΠΎΡ‚ 100 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² ΠΊΠ°ΠΊΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π½ΡƒΠΆΠ½ΠΎ возвСсти 10, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 100. ΠžΡ‚Π²Π΅Ρ‚ 10

Π’ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ "О большоС"(ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅), log всСгда ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 2. Для списка ΠΈΠ· 8 элСмСнтов log8 == 3, Ρ‚ΠΊ 2^3 === 8.

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с отсортированным списком.

ВрСмя выполнСния

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ измСряСтся Π½Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Π° ростом ΠΊΠΎΠ»-Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Если максимальноС ΠΊ-Π²ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ совпадаСт с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ списка, ΠΏΡ€ΠΈ простом поискС, врСмя выполнСния - Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя пыполнСния.

ΠŸΡ€ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ поискС - поиск выполняСтся Π·Π° логарифмичСскоС врСмя.

Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя - уТасный уТас - ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎΠΌ спискС, поиск становится нСвСроятно Π΄ΠΎΠ»Π³ΠΈΠΌ. НаримСр, поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ расстояния для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Ρ…Π°Ρ‚ΡŒ n Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ²: 5 Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² - 120 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, 6 Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² - 720, 7 Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² - 5040.

Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя - O(n) логарифмичСскоС врСмя - O(log n) Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя - O(n!)

РСализация Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска УпраТнСния

About

Aditya Bhargava. Grokking Algoritms. A summary of the book with java script examples.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published