[用JS來寫演算法和了解資料結構] Day2 學習目錄和原始型別
學習目錄
我的學習順序大致會分Data Structure和Algorithms兩個大項
另外搭配leetcode的題目。
Data Structure:
原始型別 Primitive Data Types
陣列 Array
雜湊表 Hash Table
集合 Set
Map / HashMap
鏈結串列 Linked List
堆疊 Stack
佇列 Queue
樹 Tree
圖 Graph
堆積 Heap
Tries
Operations on data structures
- Insert
- Access
- Search
- Delete
- Traverse
- Sort
不同資料結構的時間複雜度
Algorithms:
搜尋 Searching:
簡易搜尋/線性搜索 Sequential Search/Linear Search - O(n)
二分搜尋 Binary Search - O(log n)
Traversal
Depth First Search (DFS)
Breadth First Search (BFS)
排序 Sorting:
- 氣泡排序 Bubble Sort - Time O(n) or O(n^2) / Space - O(1)
- 選擇排序 Selection Sort - Time O(n^2) / Space - O(1)
- 插入排序 Insertion Sort - Time O(n) or O(n^2) / Space - O(1)
- 合併排序 Merge Sort - Time O(n log n) / Space - O(n)
- 快速排序 Quick Sort - Time O(n log n) / Space - O(log n)
遞迴 Recursion / 費波那契數列 Fibonacci numbers
分而治之 Divide-and-Conquer / 合併排序 Merge Sort 快速排序 Quick Sort
動態規劃 Dynamic programming / 費波那契數列 Fibonacci numbers
Greedy
Backtracking
原始型別 Primitive Data Types
原始型別就是資料結構中最基本的元素,
- 因為是先學js才來了解資料結構,但js是弱型別語言,所以可能不太能理解某些結構與型別,可能會以js原始型別來想像會比較好理解吧(?)
分為以下:
- 整數 Integers - E.g., 1, 2, 3,
- 字元 Characters - E.g., a, b, “1”, “*”
//在js中應該可以想像是字串.. - 布林 Booleans - E.g., true or false
- 浮點數或雙精度 Float (floating points) or doubles E.g., 3.14159, 1483e-2
// js中數字型別都是以double的形式存在,可以是整數也可以代表浮點數另外還有+Infinity、-Infinity、NaN這三種。 - Null values. E.g. null
- 另外JavaScript還有其他兩個型別 undefined和Symbol。
- Object不是原始型別。
學習與參考資料
[用JS來寫演算法和了解資料結構] Day2 學習目錄和原始型別