Know Thy Complexities! (Français)

Salut ! Cette page web couvre les complexités Big-O spatiales et temporelles des algorithmes courants utilisés en informatique. Lors de la préparation d’entretiens techniques dans le passé, je me suis retrouvé à passer des heures à ramper sur Internet pour rassembler les complexités du meilleur, du moyen et du pire cas pour les algorithmes de recherche et de tri afin de ne pas être bloqué lorsqu’on m’interrogeait à leur sujet. Au cours des dernières années, j’ai passé des entretiens dans plusieurs start-ups de la Silicon Valley, ainsi que dans des entreprises plus importantes, comme Google, Facebook, Yahoo, LinkedIn et Uber, et chaque fois que je me préparais à un entretien, je me disais : « Pourquoi personne n’a créé une belle antisèche Big-O ? Alors, pour vous faire gagner du temps à tous, j’ai décidé d’en créer une. Enjoy ! – Eric

Vérifiez El Grapho, une bibliothèque de visualisation de données de graphes qui prend en charge des millions de nœuds et d’arêtes

Big-O Complexity Chart

Horrible Bad Fair Good Excellent
O(log n), O(1) O(n) O(n log n) O(n^2) O(2^n) O(n !) Éléments d’opérations

Opérations courantes sur la structure de données

.

.

.

O(1)

.

..

.

Θ(log(n))

.

.

.

.

.

Structure de données Complexité temporelle Complexité spatiale
Moyenne Mauvaise Mauvaise
Accès Recherche Insertion Suppression Accès Recherche Insertion Délétion
Array Θ(1) Θ(n) Θ(n) Θ(n) O(n) O(n) O(n) O(n)
Stack Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n) O(1) O(1) O(n)
Queueueue Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n) O(1) O(1) O(n) Singly-Linked List Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n) O(1) O(1) O(n) La liste doublement-Linked List Θ(n) Θ(n) Θ(1) Θ(1) O(n) O(n) O(1) O(1) O(n)
Liste de saut Θ(log(n)) Θ(log(n)) Θ(log(n)) O(n) O(n) O(n) O(n) O(n log(n))
Tableau de hachage N/A Θ(1) Θ(1) Θ(1) N/A O(n) O(n) O(n) O(n)
Arbre de recherche binaire Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(n) O(n) O(n) O(n) O(n)
Arbre cartésien
.N/A
Θ(log(n)) Θ(log(n)) Θ(log(n)) N/A O(n) O(n) O(n) O(n)
B-Arbre Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n) Rouge-Arbre noir Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
Arbre d’affichage N/A Θ(log(n)) Θ(log(n)) Θ(log(n)) N/A O(log(n)) O(log(n)) O(log(n)) O(n)
Arbre AVL Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
KD Tree Θ(log(n)) Θ(log(n)) Θ(log(n)) Θ(log(n)) O(n) O(n) O(n) O(n) O(n)

Algorithmes de tri de tableaux

.

.

Tri rapide

.

.

.

.

.

.

.

.

.

.

Algorithme Complexité en temps Complexité en espace
Meilleur Moyenne Mauvais Pire
Ω(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)
Tri à Bulles Ω(n) Θ(n^2) O(n^2) O(1)
Tri par insertion Ω(n) Θ(n^2) O(n^2) O(1)
Tri de sélection Ω(n^2) Θ(n^2) O(n^2) O(1)
Tri de l’arbre Ω(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)
Tri du seau
Ω(n+k) Θ(n+k) O(n^2) O(n)
Radix Sort Ω(nk) Θ(nk) O(nk) O(n+k)
Tri de comptage Ω(n+k) Θ(n+k) O(n+k) O(k)
Cubesort Ω(n) Θ(n log(n)) O(n log(n)) O(n)

En savoir plus

  • Cracking the Coding Interview : 150 questions et solutions de programmation
  • Introduction aux algorithmes, 3rd Edition
  • Structures de données et algorithmes en Java (2e édition)
  • High Performance JavaScript (Build Faster Web Application Interfaces)

Get the Official Big-O Poster Cheat Sheet

Contributeurs

  1. Eric Rowell
  2. Quentin Pleple
  3. Michael Abed
  4. Nick Dizazzo
  5. Adam Forsyth
  6. Felix Zhu
  7. .

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

Améliorez cette page

Modifiez ces tableaux !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *