https://github.com/c-weiyu/data-structure-algorithm
資料結構與演算法之作品集
https://github.com/c-weiyu/data-structure-algorithm
bst codesignal heap-sort leetcode merge-sort quicksort stack
Last synced: 3 months ago
JSON representation
資料結構與演算法之作品集
- Host: GitHub
- URL: https://github.com/c-weiyu/data-structure-algorithm
- Owner: C-WeiYu
- Created: 2019-09-20T03:58:50.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-02T07:39:10.000Z (7 months ago)
- Last Synced: 2024-12-02T08:32:40.413Z (7 months ago)
- Topics: bst, codesignal, heap-sort, leetcode, merge-sort, quicksort, stack
- Language: Jupyter Notebook
- Homepage:
- Size: 5.53 MB
- Stars: 3
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![]()
# About Here
>在這裡記錄我學習程式的過程,不管資料結構與演算法或是其他的作品,
之後都會在這裡陸續更新,歡迎大家觀看,喜歡可以點Follow或星星或Fork。
- [1.自我介紹](#自我介紹)
- [2.課堂進度&筆記](#課堂進度筆記)
- [3.CS50](#cs50)
- [4.課程心得](#課程心得)
- [5.相關作品](#作品集)
# [來點正能量-♫Zootopia](https://www.youtube.com/watch?v=QoXPVSSHzs8)![]()
如電影般的人生,充滿失敗與成功,成為自己的導演,掌控結局
## 自我介紹:![]()
>大家好我叫莊崴宇,目前就讀東吳大學巨資三B
對我而言課業是種負擔,而從課業中尋求樂趣藉此投入才是中心
在學習程式設計這方面狀況並不樂觀,但我享受解開問題的瞬間
喜歡充滿挑戰的人生,沉浸於成功後的愉悅與光榮,這就是我
## 課堂進度&筆記:
**(因避免排版過於雜亂,以連結網頁內容表示上課內容)**
### Week1
- 停課
### Week2:Linked List
>講解Linked List的基本性質及Node的組成
- [Introduce Linked List](https://www.youtube.com/watch?v=WwfhLC16bis&feature=emb_logo)
- [About Leetcode](https://leetcode.com/problemset/all/)
- [About Codesignal](https://codesignal.com/)
- [x] [MY Linked list](https://github.com/C-WeiYu/Data-Structure-Algorithm/blob/master/Leetcode/707_Design%20Linked%20List_06170201.py)
### Week3:Stack and Queue
>接連著上禮拜的Linked List,延伸至Stack與Queue結構,並講解兩者的差異
- [補充 : About Stack](http://alrightchiu.github.io/SecondRound/stack-introjian-jie.html)
- [補充 : About Queue](http://alrightchiu.github.io/SecondRound/priority-queueintrojian-jie.html)
- [Maze By Stack](https://www.youtube.com/watch?v=yCQLluCn3rc&feature=emb_logo)
- [x] [My Stack](https://github.com/C-WeiYu/WeiYu/blob/master/Leetcode/class/155.Min%20Stack.py)
- [x] [My Queue](https://github.com/C-WeiYu/WeiYu/blob/master/Leetcode/class/232.%20Implement%20Queue%20using%20Stacks.py)
### Week4:InsertionSort and QuickSort
>演習課補充了InsertionSort的規則與示範,正課則講解QuickSort的運作方法
- [Set By Teacher](https://github.com/pecu/DSA/blob/master/03_Set/set-mismatch.py)
- [Set Exercise](https://leetcode.com/problems/set-mismatch/)
- [About Insertion Sort](http://notepad.yehyeh.net/Content/Algorithm/Sort/Insertion/1.php)
- [Bubble Sort vs Quick Sort](https://www.youtube.com/watch?v=G4dwRF_Rzd0&feature=emb_logo)
- [x] [My Quick Sort](https://github.com/C-WeiYu/WeiYu/blob/master/HW1/QuickSort.ipynb)
### Week5
- 放假
### Week6:QuickSort and HeapSort
>除了補充上上星期的QuickSort外,講了關於HeapSort的運作方法,初次踏入了Tree結構
演習課的部分教了如何使用Spyder去增加Debug的效率
- [補充 : About Quick Sort](http://alrightchiu.github.io/SecondRound/comparison-sort-quick-sortkuai-su-pai-xu-fa.html)
- [補充 : About Heap Sort](http://alrightchiu.github.io/SecondRound/comparison-sort-heap-sortdui-ji-pai-xu-fa.html)
- [Spyder Debug Mode](https://docs.spyder-ide.org/debugging.html)
- [Python Code](https://realpython.com/python-pep8/?fbclid=IwAR1olxlNcAQhKZVNw6-JBCituCKsqfk3YL67xOMfQA-_fyqbHyrFJRm15T4)
- [x] [My Heap Sort](https://github.com/C-WeiYu/WeiYu/blob/master/HW2/heap_sort_06170201.py)
### Week7:Merge Sort
>講解MergeSort的運作方法並補充了HeapSort的資料結構
- [Heap Sort](https://algorithm.yuanbin.me/zh-tw/basics_data_structure/heap.html)
- [Merge Sort](https://www.c-programming-simple-steps.com/merge-sort.html)
- [Merge Sort:Pseudocode](https://www.slideshare.net/MJabin/merge-sort-and-quick-sort)
- [Merge Sort vs Quick Sort](https://www.youtube.com/watch?time_continue=1&v=es2T6KY45cA&feature=emb_logo)
- [x] [My Merge Sort](https://github.com/C-WeiYu/WeiYu/blob/master/HW2/merge_sort_06170201.py)
### Week8:Binary Tree By Linked List
>正式踏入Tree結構,並講解如何用Linked List去理解Binary Tree
- [What are Trees](https://www.tutorialride.com/data-structures/trees-in-data-structure.htm)
- [Binary Tree](http://alrightchiu.github.io/SecondRound/binary-tree-introjian-jie.html)
- [Binary Tree Structure](http://www.math.bas.bg/~nkirov/2017/NETB201/slides/ch06/ch06-2.html)
- [Binary Tree Structure_YT](https://www.youtube.com/watch?time_continue=150&v=ikPPdBDZnz4&feature=emb_logo)
### Week9:Binary Search Tree
> 講解Binary Search Tree,並分辨Binary Search Tree與 Binary Tree的差別
- [Binary Tree vs Binary Search Tree](https://www.youtube.com/watch?v=7vw2iIdqHlM&feature=emb_logo)
- [Search and Insert](http://alrightchiu.github.io/SecondRound/binary-search-tree-searchsou-xun-zi-liao-insertxin-zeng-zi-liao.html)
- [補充 : Delete](http://alrightchiu.github.io/SecondRound/binary-search-tree-sortpai-xu-deleteshan-chu-zi-liao.html)
- [x] [My Binary Search Tree](https://github.com/C-WeiYu/WeiYu/blob/master/HW3/binary_search_tree_06170201.py)
### Week10:Red Black Tree
>延續Binary Search Tree,以Red Black Tree解決BST不平衡的問題
- [Red Black Tree Rule](https://yotsuba1022.gitbooks.io/data-structure-note/content/1.4.3-red-black-tree.html)
- [Rotation](https://en.wikipedia.org/wiki/Tree_rotation)
- [About Black Tree](http://www.ciaoshen.com/algorithm/2018/11/09/red-black-tree.html)
- [Complexity](https://subscription.packtpub.com/book/application_development/9781786463890/6/ch06lvl1sec63/complexity-of-different-tree-data-structures)
- [Practice Page](https://www.cs.usfca.edu/~galles/visualization/RedBlack.html)
### Week11:Hash Table
>講解Hash Function的目的與Hash Table的使用方法及目的
- [What is Hash Table](https://en.wikipedia.org/wiki/Hash_table)
- [Hash Set](https://www.cs.wcupa.edu/rkline/ds/hash-sets.html)
- [Hash Function](https://themoneymongers.com/bitcoin-hash/)
- [進位制](/pic/hash.jpg)
### Week12:Breadth-First Search
>介紹Bredth-First Search的運作方法
- [About BFS](http://alrightchiu.github.io/SecondRound/graph-breadth-first-searchbfsguang-du-you-xian-sou-xun.html)
- [BFS By Queue](https://www.programiz.com/dsa/graph-bfs)
- [Pair Programming](https://www.youtube.com/watch?v=vgkahOzFH2Q&feature=youtu.be)
- [補充 : Graph](http://www.csie.ntnu.edu.tw/~u91029/Graph.html)
### Week13:Depth-First Search
>介紹Depth-First Search的運作方法並和BFS比較
- [About DFS](http://alrightchiu.github.io/SecondRound/graph-depth-first-searchdfsshen-du-you-xian-sou-xun.html)
- [DFS Step By Step](https://www.javatpoint.com/breadth-first-search-algorithm)
- [DFS PseudoCode](https://www.youtube.com/watch?v=GFlthbUd7LQ&feature=youtu.be)
- [DFS vs BFS](https://github.com/C-WeiYu/WeiYu/blob/master/pic/BFS%20vs%20DFS.md)
- [x] [My BFS and DFS](https://github.com/C-WeiYu/WeiYu/blob/master/HW5/BFS_06170201.py)
### Week14:Minimum Spanning Tree - Kruskal
>講解Kruskal的運作方法及使用目的
- [About Kruskal](https://zh.wikipedia.org/wiki/%E5%85%8B%E9%B2%81%E6%96%AF%E5%85%8B%E5%B0%94%E6%BC%94%E7%AE%97%E6%B3%95)
- [Kruskal Step By Step](https://www.geeksforgeeks.org/kruskals-minimum-spanning-tree-algorithm-greedy-algo-2/)
- [Maze By Kruskal](https://codereview.stackexchange.com/questions/197356/searching-a-maze-using-dfs-and-bfs-in-python-3)
- [Informations](https://github.com/C-WeiYu/WeiYu/blob/master/Kruskal_inf.md)
### Week15:Shortest Path - Dijkstra
>講解Dijkstra的運作方法及使用目的並和Kruskal比較
- [Dijkstra Step By Step](https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/)
- [x] [My Kruskal and Dijkstra](https://github.com/C-WeiYu/WeiYu/blob/master/HW6/Dijkstra_06170201.py)
### Week16
- 總複習
-![]()
### Week17
- 期末考
### Week18
- 停課
## CS50:
## 課程心得:
這堂課應該是人生中最煩惱但也最充實的一堂課了,雖然說每個作業都有兩個星期的時間去寫,但卻也整整花了兩個禮拜天每熬夜都三四點才可以把程式碼實現,對我來說這堂課很辛苦也值得,雖然作業經常拿到滿分,但光芒背後有著多少的陰影是大家不知道的,我的程式能力不好,甚至我自己覺得比一半的人都差,所以過程中比別人加倍努力,就像老師常說的,可怕的不是別人比你聰明,而是聰明的人比你更努力,我也常常警惕著自己,也許自己做不到最好,至少要努力追上別人的腳步。
過程中有哭有笑,還記得一開始大家完全沒辦法接受的上課過程與作業規則到後來老師、助教、同學互相討論,以討論取代情緒,一切漸漸走上軌道,我覺得這是一個很難得也很神奇的事情,或許就是因為一直以來都是老師說一就是一的教育,所以當過程過於艱難的時候就會想要放棄,但這堂課有著不同情境,老師跟學生之間彷彿有一墩橋樑建立,整個學習環境也漸漸改善,我覺得這是讓很多人不選擇放棄退選的原因,也謝謝老師跟助教過程中的教導、包容。
對我來說大三的這堂資料結構與演算法,雖然課程內容一直圍繞著演算法,但更重要的是這堂課所改變的人事物,半年前的我不是一個會自動去寫程式碼的人,甚至每次有程式碼的作業就會覺得很無聊,希望老師不會用太難的程式碼來考,但經過這堂課的洗滌後我找到了對程式碼隱含的一點熱忱,當學會怎麼把自己的想法以程式碼實現之後就會發現其實並不排斥程式碼,排斥的是把程式碼當歷史文學般背誦的錯路,雖然在體會那種成就那種爽感前要付出的很多,就連跨年夜都要自己在家繼續打code,別人還不能了解你到底在忙什麼,我很清楚,這種過程大概只有修過這堂資料結構與演算法的同學們可以理解,這是巨資大三的共同回憶吧。
最後要謝謝老師所設計的課程內容,雖然過程真的艱辛無比,但改變了很多事情,而我們也還沒溺斃;也謝謝助教,一開始看到熬夜寫到三四點的作業被改抄襲的時候心中真的是OOXX,但後來也漸漸了解了這個制度的用意,很多事就像這些成績一樣,不主動去爭取就無形中被奪走了,但主動爭取之後改拿到的終究會拿到;最後也謝謝在這堂課一起成長的同學,過程中受人幫助很多,不管是程式碼的幫忙或是互相抱怨的過程。
「如果明天是生命的最後一天,今天會用什麼樣的態度來活著?」不敢說會做多麼偉大多麼瘋狂的事,至少讓某個世界因為自己而有一點的不同。
## 作品集:
### 資料結構與演算法
- [x] [HW1:QuickSort](https://github.com/C-WeiYu/WeiYu/tree/master/HW1)
- [x] [HW2:MergeSort and HeapSort](https://github.com/C-WeiYu/WeiYu/tree/master/HW2)
- [x] [HW3:Binary Search Tree](https://github.com/C-WeiYu/WeiYu/tree/master/HW3)
- [x] [HW4:Hash Table](https://github.com/C-WeiYu/WeiYu/tree/master/HW4)
- [x] [HW5:BFS and DFS](https://github.com/C-WeiYu/WeiYu/tree/master/HW5)
- [x] [HW6:Dijkstra and Kruskal](https://github.com/C-WeiYu/WeiYu/tree/master/HW6)
### [CodeSignal](https://github.com/C-WeiYu/WeiYu/tree/master/CodeSignal)
> 陸續將自己程式基礎補齊的足跡
### [LeetCode](https://github.com/C-WeiYu/LeetCode.git)
> 裡面有我在LeetCode慢慢累積的點滴
### HTML
> 放上關於我在大學所做的html
- [x] [Chocolate Worlde(Encoding with Big5)](https://c-weiyu.github.io/GoogleAnalytic_Chocolate-World/)
- [x] [CS:GO Analysis(Encoding with utf-8)](https://c-weiyu.github.io/Visualize_CSGO-Analysis/)
## 學習之地:
> 課外學習
+ [Data Science Meetup台灣資料科學社群](https://www.facebook.com/groups/1356636874425968/)
+ [What is Bigdata](https://www.managertoday.com.tw/articles/view/52306)