Algoritmi e Strutture Dati in Javascript

October 22, 2025 · View on GitHub

CI codecov

Questa repository contiene esempi in Javascript dei più popolari algoritmi e strutture dati .

Ogni algortimo e struttura dati ha il suo README separato e la relative spiegazioni e i link per ulteriori approfondimenti (compresi quelli su YouTube).

Leggilo in altre lingue: 简体中文, 繁體中文, 한국어, 日本語, Polski, Français, Español, Português, Русский, Türk, Bahasa Indonesia, Українська, Arabic, Tiếng Việt, Deutsch, Uzbek עברית

Strutture Dati

Una struttura dati è un particolare modo di organizzare e memorizzare i dati in un computer che permeta di accedervi e modificarli in modo efficiente. Più precisamente, una struttura dati è una raccolta di dati, le relazioni tra di essi e le funzioni o operazioni che possono essere applicate ai dati.

P - Principiante, A - Avanzato

Algoritmi

Un algoritmo è una specifica univoca per risolvere una classe di problemi. È un insieme di regole che definiscono con precisione una sequenza di operazioni.

P - Principiante, A - Avanzato

Algoritmi per Topic

Modelli di Algoritmi

Un modello di algoritmo è un generico metodo o approcio che sta alla base della progettazione di una classe di algoritmi. Si tratta di un'astrazione ancora più alta di un algoritmo, proprio come un algoritmo è un'astrazione di un programma del computer.

Come usare questa repository

Installare tutte le dipendenze

npm install

Eseguire ESLint

Potresti usarlo per controllare la qualità del codice.

npm run lint

Eseguire tutti i test

npm test

Eseguire un test tramite il nome

npm test -- 'LinkedList'

Playground

Se vuoi puoi giocare le strutture dati e gli algoritmi nel file ./src/playground/playground.jse scrivere test nel file./src/playground/test/playground.test.js`.

Poi puoi semplicemente eseguire il seguente comando per testare quello che hai scritto :

npm test -- 'playground'

Informazioni Utili

Bibliografia

▶ Data Structures and Algorithms on YouTube

Notazione Big O

  • La notazione Big O* è usata per classificare algoritmi in base al tempo di esecuzione o ai requisiti di spazio che crescono in base alla crescita dell'input . Nella grafico qua sotto puoi trovare gli ordini di crescita più comuni degli algoritmi usando la notazione Big O.

Grafi Big O

Riferimento: Big O Cheat Sheet.

Nella tabella qua sotto ci sono riportate la lista delle notazioni Big O più usate e delle loro prestazioni comparate tra differenti grandezze d'input .

Notazione Big OComputazione con 10 elementiComputazione con 100 elementiComputazione con 1000 elementi
O(1)111
O(log N)369
O(N)101001000
O(N log N)306009000
O(N^2)100100001000000
O(2^N)10241.26e+291.07e+301
O(N!)36288009.3e+1574.02e+2567

Complessità delle Operazion sulle Strutture Dati

Struttura DatiAccessoRicercaInserimentoRimozioneCommenti
Array1nnn
Pilann11
Codann11
Lista Concatenatann1n
Tabella Hash-nnnNel caso di una funzione di hashing perfetta il costo sarebbe O(1)
Binary Search TreennnnNel caso di albero bilanciato il costo sarebbe O(log(n))
B-Treelog(n)log(n)log(n)log(n)
Red-Black Treelog(n)log(n)log(n)log(n)
Albero AVLlog(n)log(n)log(n)log(n)
Bloom Filter-11-Falsi positivi sono possibili durante la ricerca

Complessità degli Algoritmi di Ordinamento di Array

NomeMilgioreMediaPerggioreMemoriaStabileCommenti
Bubble sortnn2n21Yes
Insertion sortnn2n21Yes
Selection sortn2n2n21No
Heap sortn log(n)n log(n)n log(n)1No
Merge sortn log(n)n log(n)n log(n)nYes
Quick sortn log(n)n log(n)n2log(n)NoQuicksort viene eseguito in memoria solitamente con una pila di O(log(n))
Shell sortn log(n)dipende dagli spazi vuoti nella sequenzan (log(n))21No
Counting sortn + rn + rn + rn + rYesr - numero più grande nell'array
Radix sortn * kn * kn * kn + kYesk - lunghezza della chiave più grande

ℹ️ A few more projects and articles about JavaScript and algorithms on trekhleb.dev