第一次參加鐵人賽好可怕,但為了激勵自己更深入地學習,我只能硬著頭皮向前推進!(一定要撐到最後阿!
接下來,我會以演算法與資料結構講解為主,透過經典題目,以及Leetcode Easy題型來加以輔助, 如有錯誤歡迎指教~
什麼是演算法呢?
演算法其實不是一種程式語言,它在日常生活中無處不在,只是我們沒有察覺而已,以下是一些日常生活的例子:
演算法其實是一門很古老的學問,像是如何生火、打獵、蓋金字塔等,人們總會使用演算法來達到目的。
所以到底什麼是演算法呢? 演算法簡單來說是一種以有限步驟的方法流程,用來解決特定問題或執行特定任務。簡單來說,演算法就是解決問題的方法流程。
而演算法有五個主要標準,通常被稱為「演算法的五個特性」,是指演算法應該具備以下特點:
有限性 (Finiteness): 在執行有限個步驟後必須能夠停止。
明確性(Definiteness):每個步驟都必須明確且精準,不能存在模棱兩可的描述。
輸入(Input): 必須有 >=0 個輸入資料。
輸出(Output): 至少要有 >=1個輸出結果。
有效性(Effectiveness):必須在合理的時間內完成,不會無限循環或延伸。
資料結構是電腦演算法的建構基石,也資料結構是一個儲存資料的方式。
簡單來說,資料結構根據數據的特性以及數量,做最適合的安排,以便於執行特定的操作,如插入、刪除、搜索和排序。
資料結構的設計極大影響處理數據的效率,而根據操作特點分為不同類型。
資料結構的常見類型包含陣列(Array)、鏈結串列(Linked List)、堆疊(Stack)、佇列(Queue)、樹(Tree)、圖(Graph)、堆積(Heap)、雜湊表(Hash table)等,每種資料結構都有它的侷限性。
現在,讓我們舉一個生活中的例子來說明資料結構,假設你正在經營一家圖書館,你需要管理數千本書籍。
U. Manber, Introduction to Algorithms: A Creative Approach. Braille Jymico Inc., 2004.
資料結構 — 洪逸 編著
演算法 — 洪捷 編著
不必因為進度落後而感到緊張,也別自責。每個人的旅程都是獨一無二的,前進的步伐也各不相同,最重要的是,勇於努力向前邁進。