Go to file
Oleksii Trekhleb e34472713b Update README.
2018-05-17 22:01:17 +03:00
assets Add quick sort. 2018-04-15 06:51:47 +03:00
src Add Knight's tour. 2018-05-17 17:48:06 +03:00
.babelrc Add jest tests. 2018-03-27 13:03:44 +03:00
.editorconfig Add linked_list. 2018-03-25 23:28:32 +03:00
.eslintrc Add detect cycle. 2018-05-05 10:58:04 +03:00
.gitignore More tests. 2018-04-04 07:02:56 +03:00
.travis.yml Integrate codecov. 2018-04-04 07:15:22 +03:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2018-04-27 16:50:12 +03:00
CONTRIBUTING.md Update docs. 2018-04-27 16:57:53 +03:00
jest.config.js Make test coverage to be optional. 2018-04-05 06:27:06 +03:00
LICENSE Add License. 2018-04-11 08:06:39 +03:00
package-lock.json Update versions. 2018-04-27 17:12:06 +03:00
package.json Update packages. 2018-04-27 09:03:12 +03:00
README.md Update README. 2018-05-17 22:01:17 +03:00

JavaScript Algorithms and Data Structures

Build Status codecov

Data Structures

Algorithms

Algorithms by Topic

Algorithms by Paradigm

How to use this repository

Install all dependencies

npm i

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 Information

References

▶ Data Structures and Algorithms on YouTube

Big O Notation

Order of growth of algorithms specified in Big O notation.

Big O graphs

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

Data Structure Operations Complexity

Data Structure Access Search Insertion Deletion
Array 1 n n n
Stack n n 1 1
Queue n n 1 1
Linked List n n 1 1
Hash Table - n n n
Binary Search Tree n n n n
B-Tree log(n) log(n) log(n) log(n)
Red-Black Tree log(n) log(n) log(n) log(n)
AVL Tree log(n) log(n) log(n) log(n)

Array Sorting Algorithms Complexity

Name Best Average Worst Memory Stable
Bubble sort n n^2 n^2 1 Yes
Insertion sort n n^2 n^2 1 Yes
Selection sort n^2 n^2 n^2 1 No
Heap sort n log(n) n log(n) n log(n) 1 No
Merge sort n log(n) n log(n) n log(n) n Yes
Quick sort n log(n) n log(n) n^2 log(n) No
Shell sort n log(n) depends on gap sequence n (log(n))^2 1 No