javascript-algorithms/Readme.zh-TW.md
2018-05-25 07:44:22 +03:00

18 KiB
Raw Blame History

JavaScript 演算法與資料結構

build status codecov

這個知識庫包含許多 JavaScript 的資料結構與演算法的基礎範例。 每個演算法和資料結構都有其個別的文件內有相關的解釋以及更多相關的文章或Youtube影片連結。

Read this in other languages: 简体中文

Read this in other languages: 繁體中文

資料結構

資料結構是一個電腦用來組織和排序資料的特定方式,透過這樣的方式資料可以有效率地被讀取以及修改。更精確地說,一個資料結構是一個資料值的集合、彼此間的關係,函數或者運作可以應用於資料上。

演算法

演算法是一個如何解決一類問題的非模糊規格。演算法是一個具有精確地定義了一系列運作的規則的集合

演算法議題分類 TODO

Algorithms by Paradigm

An algorithmic paradigm is a generic method or approach which underlies the design of a class of algorithms. It is an abstraction higher than the notion of an algorithm, just as an algorithm is an abstraction higher than a computer program.

如何使用本知識庫

安裝所有必須套件

npm install

執行所有測試

npm test

以名稱執行該測試

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'

有用的資訊

參考

▶ Data Structures and Algorithms on YouTube

大 O 標記

Order of growth of algorithms specified in Big O notation.

Big O 表

資料來源: 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 600 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