Найти Π² Π”Π·Π΅Π½Π΅
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸπŸ€” Β«Π—Π°Π΄ΡƒΠΌΡ‡ΠΈΠ²Ρ‹ΠΉΒ» ΠΊΠΎΠ΄: врСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со структурами Π΄Π°Π½Π½Ρ‹Ρ… Π² Python

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Python Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ваш ΠΊΠΎΠ΄ Β«Π·Π°Π΄ΡƒΠΌΡ‡ΠΈΠ²ΠΎΒ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ? Π”Π°Π²Π°ΠΉΡ‚Π΅ вмСстС разбСрСмся Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ быстрый ΠΈ эффСктивный ΠΊΠΎΠ΄ Π½Π° Python! Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» взят ΠΈΠ· нашСй субботнСй email-рассылки, посвящСнной Python. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² числС ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ дайдТСст. πŸ“§ ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ (function () { let link = document .getElementById ("1535ba42-09a6-4ed2-b2e5-f1c0d18402a1-https://proglib.io/w/edaee37b-2"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action,

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Python Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ваш ΠΊΠΎΠ΄ Β«Π·Π°Π΄ΡƒΠΌΡ‡ΠΈΠ²ΠΎΒ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ? Π”Π°Π²Π°ΠΉΡ‚Π΅ вмСстС разбСрСмся Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ быстрый ΠΈ эффСктивный ΠΊΠΎΠ΄ Π½Π° Python!

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» взят ΠΈΠ· нашСй субботнСй email-рассылки, посвящСнной Python. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² числС ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ дайдТСст.

πŸ“§ ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ

(function () { let link = document .getElementById ("1535ba42-09a6-4ed2-b2e5-f1c0d18402a1-https://proglib.io/w/edaee37b-2"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° – это ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт, ΠΊΠ°ΠΊ растСт врСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ количСства Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π½Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… слоТностСй ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ список ΠΈΠ· 10 элСмСнтов, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт Π² этом спискС. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ списку с Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ‚Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт. Для списка ΠΈΠ· 10 элСмСнтов это Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Но Ρ‡Ρ‚ΠΎ Ссли список состоит ΠΈΠ· 100 элСмСнтов? Или ΠΈΠ· 1000? 1000000? Алгоритм, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ просматриваСм вСсь список, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка. ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт Π½Π°ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, насколько замСдлится Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с поиском Π² спискС врСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ O(n), Π³Π΄Π΅ n – Ρ€Π°Π·ΠΌΠ΅Ρ€ списка. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° растСт ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΎΡ‚ основныС Π²ΠΈΠ΄Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… слоТностСй:

  1. O(1) – константноС врСмя. ВрСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ зависит ΠΎΡ‚ объСма Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: len(list) – ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ списка выполняСтся Π·Π° константноС врСмя, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка.
  2. O(n) – Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя. ВрСмя выполнСния ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: поиск элСмСнта Π² спискС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° in (item in some_list) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ просмотра списка.
  3. O(n^2) – ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ врСмя. ΠžΡ‡Π΅Π½ΡŒ нСэффСктивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Π³Π΄Π΅ врСмя растСт ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСх ΠΏΠ°Ρ€ элСмСнтов Π² спискС.
  4. O(n log n) – логарифмичСскоС врСмя. Π‘ΠΎΠ»Π΅Π΅ эффСктивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Ρ‡Π΅ΠΌ O(n^2), Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ O(n). ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки sorted(list).
  5. O(log n) – Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-логарифмичСскоС врСмя. ΠžΡ‡Π΅Π½ΡŒ эффСктивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… растСт логарифмичСски ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск Π² отсортированном спискС.

Π‘ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ слоТности: O(n^3), O(n^2 log n), O(2^n) ΠΈ Ρ‚.Π΄. Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² повсСднСвном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π΅ΠΆΠ΅.

   Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности

Π’Ρ€Π΅ΠΉ Π₯Π°Π½Π½Π΅Ρ€ написал ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉΡˆΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со структурами Π΄Π°Π½Π½Ρ‹Ρ… Python. Автор ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вставки ΠΈ удалСния Π² списках ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² зависимости ΠΎΡ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ – Π² ΠΊΠΎΠ½Ρ†Π΅ списка ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ быстро, Π° Π² Π½Π°Ρ‡Π°Π»Π΅ списка – ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ послС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ всС элСмСнты). Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Бписок (List)

  • Доступ ΠΊ элСмСнту ΠΏΠΎ индСксу (sequence[index]) – O(1)
  • ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ элСмСнта ΠΏΠΎ индСксу (sequence[index] = value) – O(1)
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ† списка (sequence.append(item)) – O(1)
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ с ΠΊΠΎΠ½Ρ†Π° списка (sequence.pop()) – O(1)
  • Вставка Π² Π½Π°Ρ‡Π°Π»ΠΎ списка (sequence.insert(0, item)) – O(n)
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ‡Π°Π»Π° списка (sequence.pop(0)) – O(n)
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнта (item in sequence) – O(n)
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ списка (len(sequence)) – O(1)

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ (Deque)

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ† (queue.append(item)) – O(1)
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ с ΠΊΠΎΠ½Ρ†Π° (queue.pop()) – O(1)
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»ΠΎ (queue.appendleft(item)) – O(1)
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ с Π½Π°Ρ‡Π°Π»Π° (queue.popleft()) – O(1)
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнта (item in queue) – O(n)

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ (Dict)

  • Доступ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ (mapping[key]) – O(1)
  • ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ (mapping[key] = value) – O(1)
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ (mapping.pop(key)) – O(1)
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наличия ΠΊΠ»ΡŽΡ‡Π° (key in mapping) – O(1)
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ (mapping.get(key)) – O(1)
  • Π˜Ρ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ°Ρ€Π΅ ΠΊΠ»ΡŽΡ‡β€“Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (for k, v in mapping.items()) – O(n)

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ (Set)

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта (my_set.add(item)) – O(1)
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта (my_set.remove(item)) – O(1)
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнта (item in my_set) – O(1)
  • Π˜Ρ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ элСмСнтам мноТСства (for item in my_set) – O(n)

ΠšΡƒΡ‡Π° (Heap)

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΡƒΡ‡ΠΈ ΠΈΠ· списка (heapq.heapify(sequence)) – O(n)
  • Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° (heapq.heappop(sequence)) – O(log n)
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта (heapq.heappush(sequence, item)) – O(log n)
  • Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск Π² отсортированном спискС (bisect):
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ индСкса для вставки (bisect.bisect(sorted_seq, item)) – O(log n)
  • Вставка с сохранСниСм сортировки (bisect.insort(sorted_seq, item)) – O(n)

***

-2

На курсС «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β» наши ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Ρ€Π°ΡΠΏΡƒΡ‚Π°Ρ‚ΡŒ самыС слоТныС алгоритмичСскиС ΡƒΠ·Π»Ρ‹ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡƒΡ‚, насколько Π·Π°Π²ΠΎΡ€Π°ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΈΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° курса

  1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²
  2. Π Π°Π±ΠΎΡ‚Π° с числами
  3. ΠœΠ°ΡΡΠΈΠ²Ρ‹
  4. Алгоритмы Π½Π° массивах
  5. Бписки. Π‘Ρ‚Π΅ΠΊ, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π΄Π΅ΠΊ
  6. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ
  7. ΠžΡΠ½ΠΎΠ²Ρ‹ сортировки
  8. ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ²Ρ‹Π΅ статистики
  9. Π”Π΅Ρ€Π΅Π²ΡŒΡ
  10. Π₯Сш-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  11. Π–Π°Π΄Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
  12. Π“Ρ€Π°Ρ„Ρ‹ ΠΈ рСкурсия
  13. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ
  14. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ
  15. Π”Π»ΠΈΠ½Π½Ρ‹Π΅ числа

πŸš€ Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ

(function () { let link = document .getElementById ("1535ba42-09a6-4ed2-b2e5-f1c0d18402a1-https://proglib.io/w/74add25d-26"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();