擁抱「資料結構」的「演算法」(30) - 完賽心得
前言
耶呼~~~ 終於 30 天了!喔耶!因為參加鐵人賽瘦了 2 公斤,因為寫文章實在太燒腦啦XDDD,一起來看看我的心得感想吧
心得
首先,非常謝謝 iT 邦幫忙鐵人賽,透過這 30 天,讓我好好的嗑了我念書時期的書跟筆記本(差點消化不良),從過程中了解到自己其實還有許多不懂的地方,需要好好認真面對,學會專業的內容之後,再進一步的內化並用自己的話說出來,透過舉例子(想謎題跟例子真的是想破頭XD),分享的動作加深自己的印象,透過 30 天的學習,真的明顯感受到自己的進步,非常開心,也謝謝大家的陪伴,如果有任何理解錯誤或不適合的內容請告訴我,讓我有機會改善 XD
再來想跟大家分享資料結構與演算法對我工作上的影響,原本的我早已把大學學過的東西通通還給老師了,等到真的發現自己在撰寫程式遇到瓶頸時,大概是畢業後的第 6 年,因為過程中其實大多是接觸前端畫面的處理,或是後端的資料庫存取,就是資料的呈現與儲存而已,等到開始接觸一些推薦系統或是 LeetCode 才發現我不會寫程式了耶!
發現自己對於如何將輸入的資料儲存成適合的資料結構會有障礙,因為資料結構會影響到後續程式排序資料或尋找資料的方便性,再來如何讀取特定的資料結構並將資料轉成自己想要呈現的結果,也卡關 XD,就像是二元樹如何使用陣列表示早知忘光,整個不知所以然,只能用慘字形容,只能好好 K 書,發現當年理解的並非真的理解
而演算法的部份更是悲慘到極點,基本排序通通不懂,剛好因為工作內容需要換成其他語言,發現比較底層的語言排序要自己寫耶,如何在一串數字中快速完成排序,又再次卡關,實在是很掉漆,頓時覺得資料結構真的很重要,這個觀念沒有架構好,演算法更是舉步維艱,覺得再這樣下去我可能工作不保,於是有開始念書,但過程中因為自己的拖延症又停擺了,剛好遇到鐵人賽,所以握緊機會參賽,果然滿載而歸
現在面對工作上的需求或是寫 LeetCode 都會先分析需求,再去了解題目的架構,需要搭配哪些資料結構來儲存相關的資料,最後再實作演算法的部分(甚至會有一些混和式的作法),讓結果符合需求,發現念書之後整個思考方式都改變了,感覺基礎觀念真的非常重要,像是求兩數的最大公因數,可以使用暴力法,也可以使用輾轉相除法,去分析兩者之間的優缺點,雖然說自己還有很多不太了解的部分,但會想繼續努力,去加強這些觀念,對於自己工作上或思考事情上面都有幫助,最大的部份應該是表達,試著用別人可以理解的方式去舉例子,而不是用自己堅持的對,去要求對方理解 XD
最後感謝我的家人,包容我 30 天,讓我可以好好的利用時間寫文章,而且我每一天都會請家人閱讀然後解謎題(好可憐XD),辛苦他們了,工作之餘還要看他們不懂的內容,感覺他們壓力好大,不過看著他們有順利通過謎題時,會覺得很開心,其實資料結構與演算法跟我們生活有許多連結,其實不像刻板印象中的那麼艱深,不過有一陣子家人會反映說他們看不懂程式碼,所以分享的內文大多是以觀念的部分在述說,程式碼的部分並沒有做說明,希望這些文章能夠讓初學者覺得資料結構與演算法是有趣的,而不是一開始就被程式碼嚇跑XD,回想到念書時期很多同學都是因為看到程式碼而放棄,連基礎觀念都還沒打好就因為誤解而離開了,真的蠻可惜的
最後的最後,謝謝資料結構與演算法陪我度過這 30 天,真的花了很多時間跟心力在跟這兩位打交道,我們應該是好朋友了(相擁而泣),也謝謝大家,下台一鞠躬(揮手)
回顧
30天的分享內容,分為兩大部分資料結構
與演算法
資料結構
- (01) - 何謂資料結構
- (02) - 陣列 Array
- (03) - 多維陣列 Multidimensional
- (04) - 單向連結串列 Singly Linked
- (05) - 雙向連結串列 Doubly Linked
- (06) - 環狀連結串列 Circular Linked
- (07) - 堆疊 Stack
- (08) - 佇列 Queue
- (09) - 樹 Tree
- (10) - 二元樹 Binary Tree
- (11) - 二元樹中序走訪
- (12) - 二元樹前序走訪
- (13) - 二元樹後序走訪
- (14) - 圖形 Graph
- (15) - 圖形表示法
- (16) - 雜湊 Hash
- (17) - 集合和映射
演算法
- (18) - 何謂演算法 Algorithm
- (19) - 氣泡排序與選擇排序
- (20) - 插入排序與謝耳排序
- (21) - 快速排序法
- (22) - 合併排序法
- (23) - 堆積排序法
- (24) - 搜尋 Search
- (25) - 循序搜尋法與二元搜尋法
- (26) - 內插搜尋法
- (27) - 費式搜尋法
- (28) - 深度與廣度優先搜尋法
- (29) - 戴克斯特拉演算法求最短路徑
- (30) - 完賽心得
畫圖
由於資料結構與演算法會使用到很多圖表,所以這段時間捲子袖子畫了很多張圖(擦汗),醜醜的還請大家見諒,還有每篇的謎題也有部分需要借助圖片,就來挑幾張來回顧一下吧XD
昨日解謎
謎題說明:找出公里數最少的路徑,然後將各國國名的字首拼起來,就會得到DIJKSTRA
就是戴克斯特拉
演算法
留言
張貼留言