Know Thy Complexities!

Hi there! Deze webpagina behandelt de ruimte en tijd Big-O complexiteiten van veelgebruikte algoritmen in de informatica. Toen ik me in het verleden voorbereidde op technische interviews, spendeerde ik uren op het internet om de beste, gemiddelde en slechtste complexiteit van zoek- en sorteeralgoritmen bij elkaar te zoeken, zodat ik niet voor verrassingen kwam te staan als er naar gevraagd werd. De laatste jaren heb ik interviews afgenomen bij verschillende start-ups in Silicon Valley, en ook bij grotere bedrijven, zoals Google, Facebook, Yahoo, LinkedIn en Uber, en elke keer als ik me op een interview voorbereidde, dacht ik bij mezelf “Waarom heeft niemand een mooi Big-O spiekbriefje gemaakt?”. Dus, om jullie allemaal een hoop tijd te besparen, heb ik er één gemaakt. Veel plezier ermee! – Eric

Kijk eens naar El Grapho, een bibliotheek voor het visualiseren van grafieken met ondersteuning voor miljoenen knooppunten en randen

Big-O-complexiteitsgrafiek

Horrible Bad Fair Good Excellent
O(log n), O(1) O(n) O(n log n) O(n^2) O(2^n) O(n!) Operatie-elementen

Common Data Structure Operations

Singly-Gekoppelde Lijst

Tweevoudig-gekoppelde lijst

Binaire zoekboom

Cartesische boom

Rood-Zwarte Boom

Speelboom

AVL-boom

KD Boom

Data Structure Tijd Complexity Space Complexity
Gemiddelde Worst Worst
Toegang Zoeken Invoegen Verwijderen Toegang Zoeken Invoegen Wissen
Array Θ(1) Θ(n) Θ(n) Θ(n) O(1) O(n) O(n)O(n) O(n)
Stack Θ(n) Θ(n) Θ(1) Θ(1) O(n)O(n) O(1) O(1) O(n)
Queue Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n)O(1) O(1) O(n)
Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n)O(1) O(1) O(n)
Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n) O(1) O(1) O(n)
Skip Lijst Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(n) O(n)O(n) O(n) O(n log(n))
Hash-tabel N/A Θ(1) Θ(1) Θ(1) N/A O(n) O(n) O(n) O(n)
Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(n) O(n) O(n) O(n) O(n)
N/A Θ(log(n)) Θ(log(n)) Θ(log(n)) N/A O(n) O(n) O(n)O(n)
B-Boom Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(log(n)) O(log(n))O(log(n)) O(log(n)) O(n)
Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(log(n)) O(log(n))O(log(n)) O(log(n)) O(n)
N/A Θ(log(n)) Θ(log(n)) Θ(log(n)) N/A O(log(n)) O(log(n)) O(log(n)) O(n)
Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(n) O(n) O(n) O(n) O(n)

Array sorteeralgoritmen

Selectie Sorteren

Algoritme Tijdcomplexiteit Ruimtecomplexiteit
Beste Gemiddelde Slechtste Slechtste
Quicksort Ω(n log(n)) Θ(n log(n)) O(n^2) O(log(n))
Mergesort Ω(n log(n)) Θ(n log(n)) O(n log(n)) O(n)
Timsort Ω(n) Θ(n log(n)) O(n log(n)) O(n)
Heapsort Ω(n log(n)) Θ(n log(n)) O(n log(n)) O(1)
Bubbelsortering Ω(n) Θ(n^2)O(n^2) O(1)
Insertion Sort Ω(n) Θ(n^2) O(n^2) O(1)
Ω(n^2) Θ(n^2) O(n^2) O(1)
Boom Sorteren Ω(n log(n)) Θ(n log(n)) O(n^2) O(n)
Shell Sort Ω(n log(n)) Θ(n(log(n))^2) O(n(log(n))^2) O(1)
Bucket Sort Ω(n+k) Θ(n+k) O(n^2) O(n)
Radix Sort Ω(nk) Θ(nk) O(nk) O(n+k)
Telsortering Ω(n+k) Θ(n+k) O(n+k) O(k)
Cubesort Ω(n) Θ(n log(n)) O(n log(n)) O(n)

Leer meer

  • Het coderingsinterview kraken: 150 Programmeervragen en oplossingen
  • Introduction to Algorithms, 3rd Edition
  • Data Structures and Algorithms in Java (2nd Edition)
  • High Performance JavaScript (Build Faster Web Application Interfaces)

Geef de officiële Big-O Cheat Sheet Poster

Contributors

  1. Eric Rowell
  2. Quentin Pleple
  3. Michael Abed
  4. Nick Dizazzo
  5. Adam Forsyth
  6. Felix Zhu
  7. Jay Engineer
  8. Josh Davis
  9. Nodir Turakulov
  10. Jennifer Hamon
  11. David Dorfman
  12. Bart Massey
  13. Ray Pereda
  14. Si Pham
  15. Mike Davis
  16. mcverry
  17. Max Hoffmann
  18. Bahador Saket
  19. Damon Davison
  20. Alvin Wan
  21. Alan Briolat
  22. Drew Hannay
  23. Andrew Rasmussen
  24. Dennis Tsang
  25. Vinnie Magro
  26. Adam Arold
  27. Alejandro Ramirez
  28. Aneel Nazareth
  29. Rahul Chowdhury
  30. Jonathan McElroy
  31. steven41292
  32. Brandon Amos
  33. Joel Friedly
  34. Casper Van Gheluwe
  35. Eric Lefevre-.Ardant
  36. Oleg
  37. Renfred Harper
  38. Piper Chester
  39. Miguel Amigot
  40. Apurva K
  41. Matthew Daronco
  42. Yun-Cheng Lin
  43. Clay Tyler
  44. Orhan Can Ozalp
  45. Ayman Singh
  46. David Morton
  47. Aurelien Ooms
  48. Sebastian Paaske Torholm
  49. Koushik Krishnan
  50. Drew Bailey
  51. Robert Burke

Betere deze pagina

Bewerk deze tabellen!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *