Udemy

Platform

中文

Language

Databases

Category

資料結構與演算法 (JavaScript)

用JavaScript學習資料結構與演算法,內容包含排序演算法、主定理、連結串列、雜湊表、二元搜尋樹、優先佇列、霍夫曼演算法、最小生成樹、深度優先搜尋、寬度優先搜尋、最短路徑演算法、戴克斯特拉演算法、動態規劃等等。

4.84 (25 reviews)

Students

23 hours

Content

May 2021

Last Update
Regular Price

EXCLUSIVE SKILLSHARE OFFER
Exclusive  SkillShare  Offer
Unlimited access to 30 000 Premium SkillShare courses
30-DAY FREE TRIAL

What you will learn

使用Big O Notation, Big Omega, Big Theta三種工具來分析不同的演算法與資料結構。

學習8種不同的排序演算法,並了解其各自的使用時機、特性與優劣關係。

使用3種基本的排序演算法,包含泡沫排序(Bubble Sort)、插入排序 (Insertion sort)、選擇排序 (Selection sort)。

使用3種進階的排序演算法,包含合併排序 (Merge sort)、堆積排序(Heap Sort)、快速排序 (Quicksort)。

使用2種線性時間複雜度的排序演算法,包含計數排序 (Counting sort)、基數排序(Radix sort)。

線性搜索(Linear Search) 與二分搜尋演算法 (Binary search algorithm)。

學習並演練演算法設計技巧,例如:Pointer, Counter, Sliding Window, Divide and Conquer。

了解並且證明主定理(Master Theorem)。

了解基本的資料結構,例如: LinkedList、Stack、Queue

了解Hashtable的運作原理與計算公式,包含Multiplication Method and Division Method

學習如何處理hashtable當中的collisions

學習三種不同的深度優先的tree traversal演算法,包含PreOrder, InOrder, PostOrder。

學習Breadth First Tree Traversal。

使用Max Heap來建立Priority Queue。

了解壓縮檔案使用的Huffman Encoding演算法。

使用Prim’s Algorithm與Kruskal’s Algorithm找到圖形中的最小生成樹(Minimal Spanning Tree)。

學習深度優先與寬度優先的Graph Traversal Algorithms。

使用Floyd-Warshall演算法找到最短路徑。

使用Dijkstra's演算法找到最短路徑。

學習動態規劃 (Dynamic programming)演算法。

了解並運用Greedy Method


Description

這堂課內容包含電腦科學世界中的常見與實用的演算法與資料結構,對於不是資工本科系的人來說,是非常重要的演算法課程!此包含演算法分析(Big O Complexity)、八種排序演算法(Sorting Algorithms)、主定理(Master Theorem)、遞迴演算法(Recursion)、連結串列(LinkedList)、雜湊表(Hash Table)、二元搜尋樹(Binary Search Tree)、優先佇列(Priority Queue)、霍夫曼演算法(Huffman Encoding)、最小生成樹(Minimal Spanning Tree)、深度優先搜尋(Depth First Search)、寬度優先搜尋(Breadth First Search)、最短路徑演算法(Floyd-Warshall Algorithm)、戴克斯特拉演算法(Dijkstra’s Algorithm)、動態規劃 (Dynamic programming)等等的內容。

在這堂課程當中,我們會學習各種電腦科學當中,使用JavaScipt這門程式語言,來了解並一步一步寫出各種實用的演算法與資料結構。資料結構與演算法為電腦科學系、資工系必修科目之一,也是所有電腦相關科系中最重要的課程之一,因為其概念應用廣泛,在現實生活中的軟體、網路應用與資料處理,都會大量使用到資料結構與演算法的概念。

電腦世界中的資料以許多不同的形式儲存起來。當資料量開始的龐大時,好的演算法與資料結構可以大幅提升資料處存與讀取的速度。在建造系統時,不同的情況下會需要不同種類的資料結構。此課程會深入淺出的學習許多至種不同的資料結構,並且逐一分析使用情況與時機,並且了解其時間複雜度。


Screenshots

資料結構與演算法 (JavaScript)
資料結構與演算法 (JavaScript)
資料結構與演算法 (JavaScript)
資料結構與演算法 (JavaScript)

Content

Introduction

Personal Website

JavaScript Help

Additional Sources

JavaScript, Math Review

Code Runner

Prettier

Array Review

Object Review

Function Review

Class Review

Log Review

Complexity and Big O Notation

The Idea of Algorithm

Comparing Algorithms

Complexity

Analysis of fun 1 and fun 2

Big O Notation

Understanding Big O

Understand Big O Notation (Formal Definition)

Big Omega and Big Theta

Big O in Arrays and Objects

Introduction to Algorithm Design

Chapter Introduction

Linear Search

Binary Search

General Guide of Algorithm Design

Intersection Problem

Counter

Coding Practice - Frequency Problem

Coding Practice - Average Pair

Pointer

Coding Practice - Palindrome

Subsequence Problem

Sliding Window

Improved Maxsum

Coding Practice - Min Sub Array

Coding Practice - Unique Letter Substring

Coding Practice - Largest Product

Recursion

Coding Practice - Fibonacci Sequence

19 Coding Practice - Array of Arrays

Sorting Algorithms I

Intro to Sorting Algorithms

Bubble Sort

Understanding the Pseudo Code

Bubble Sort Code

Big O of Bubble Sort

Insertion Sort

Pseudocode for Insertion Sort

Implement Insertion Sort

Big O of Insertion Sort

Selection Sort

Implement Selection Sort

Big O of Selection Sort

Sorting Algorithms II

Intro to chapter 4

Merge Sort

Implementing Merge Sort

Big O of Merge Sort

Intro to Tree

Build Max Heap

BUILD-MAX-HEAP algorithm Quiz

Heap Sort Algorithm

Implementing Heap Sort

Overview of Heap Sort

(Challenging) Deeper Look of Build Max Heap

Quicksort and partition

Implementing Quick Sort

Overview of Quick Sort

Master Theorem, Lower bounds of Searching and Sorting

Lower bounds of searching

Lower bounds of Comparison Based Sorting Algorithm

Comparison Based Sorting

Heap Sort Deeper Look

Intro to Master Theorem

Master Theorem

Proof of Master Theorem

(Challenging) Linear Time Sorting

Data Structure I

Intro to Data Structure

Linked List

Advantages of Linked List

Linked List Push

Linked List Pop

Linked List Shift

Linked List Unshift

Linked List InsertAt

Linked List removeAt

Linked List get

Disadvantages of Linked Lists

Overview of Linked List

Doubly Linked List

Stack

Queue

Example and Deque

Hashtable Motivation

Hash Function

Division Method

Multiplication Method

(Challenging) Understanding Multiplication Method

Handing Collisions

Coding Hashtable I

Parsing string to integer

Coding Hashtable II

Understanding hashtable

Data Structure II: Tree

Intro to Tree

Graph Definition

Tree Definition

Tree Traversal

Breadth-First

PreOrder

InOrder

PostOrder

Answer to Practice

Intro to BST

Constructing BST

Insertion Pseudocode of BST

Tree Insertion

Traversal

Searching in BST

Overview of BST

Intro to Priority Queue

Max Heap Insertion

Index Number

Enqueue

Dequeue

Encoding Theory

Compression with Simple Approach

Huffman Encoding

Huffman Encoding Codes

Intro to MST

Prim's Algorithm

Prim's Codes

Kruskal's Algorithms

Application of MST

Data Structure III - Graph

Intro to Graph Algorithms

Depth First Graph Traversal

Breadth First Traversal

Exercise

Pseudocode of DFT

Coding DFT

Coding BST

Intro to Floyd-Warshall

Floyd Warshall Algorithm

Intro to Dijkstra's Algorithm

Dijkstra's Algorithm by Hand

Dijkstra's Code


3819536

Udemy ID

2/2/2021

Course created date

4/23/2021

Course Indexed date
Bot
Course Submitted by

Twitter
Telegram