mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-11-10 11:09:43 +08:00
assets | ||
src | ||
.babelrc | ||
.editorconfig | ||
.eslintrc | ||
.gitignore | ||
.travis.yml | ||
jest.config.js | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md |
JavaScript Algorithms and Data Structures
Code Examples
Data Structures
Algorithms
- Math
- String
- Graph
- Sorting
Running Tests
Run all tests
npm test
Run tests by name
npm test -- -t 'LinkedList'
Playground
You may play with data-structures and algorithms in ./src/playground/playground.js
file and write
tests for it in ./src/playground/__test__/playground.test.js
.
Then just simply run the following command to test if your playground code works as expected:
npm test -- -t 'playground'
Useful links
- Data Structures and Algorithms on YouTube
- Algorithms
- Dynamic Programming
Useful Information
Big O Notation
Order of growth of algorithms specified in Big O notation.
Source: Big O Cheat Sheet.
Below is the list of some of the most used Big O notations and their performance comparisons against different sizes of the input data.
Big O Notation | Computations for 10 elements | Computations for 100 elements | Computations for 1000 elements |
---|---|---|---|
O(1) | 1 | 1 | 1 |
O(log N) | 3 | 6 | 9 |
O(N) | 10 | 100 | 1000 |
O(N log N) | 30 | 60 | 9000 |
O(N^2) | 100 | 10000 | 1000000 |
O(2^N) | 1024 | 1.26e+29 | 1.07e+301 |
O(N!) | 3628800 | 9.3e+157 | 4.02e+2567 |
Common Data Structure Operations
Source: Big O Cheat Sheet.
Array Sorting Algorithms
Source: Big O Cheat Sheet.
Name | Best | Average | Worst | Memory | Stable | Method | Notes |
---|---|---|---|---|---|---|---|
Bubble sort | n | n^2 | n^2 | 1 | Yes | Exchanging | Tiny code size. |