多年 SEO 專案經驗,在生活中有許多角色,其中一個是 "前端工程師學徒",希望透過 30 天自我挑戰成長,學會用 javaScript 練習演算法跟資料結構。
一、什麼是資料結構 ? 當我們撰寫程式時,會宣告變數來存放資料,這些資料會儲存在記憶體中,在我們需要時可以拿出來使用。這邊我們可以思考兩點: 要儲存的資料內容...
一、什麼是演算法 ( Algorithm ) ? 演算法是一組 step by step 用來解決問題、完成任務的指令,它的定義: 在有限時間內 在有限步驟內...
一、如何判斷演算法的效能 ? 當同樣的問題,可以用不一樣的演算法來解決時,要如何判斷哪個演算法比較好 ?可以使用以下兩個評量指標: 花的時間少,所需步驟少 (...
我們透過 LeetCode #412 Fizz Buzz 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個正整數 從 1 到 n,依序判斷...
我們繼續透過 LeetCode #66 Plus One 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個正整數組成,且從大到小排序好的陣...
我們繼續透過 LeetCode #1 Two Sum 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個 nums[] 和 target 找...
插入排序法是將陣列中未排序的元素,逐一與排序好的資料作比較。它的時間複雜度是 (O(n^2))。 一、步驟觀察 標記第一個元素作為已排序的部分 遍歷未排...
選擇排序法的概念是,將陣列分為兩個部分,每次掃描未排序的部分時,從數列中拿出最小的數,丟到另一邊,最後就會得到一個完成排序的陣列。它的時間複雜度是 O(n^2...
氣泡排序法是,從第一個元素開始,和相鄰數字比大小,若有需要就交換位置。因此也可稱為交換排序法。它的時間複雜度是 O(n^2)。 一、步驟觀察 遍歷未排序...