在電腦科學中,資料結構是電腦中儲存、組織資料的方式,其實就是資料加上去定義一些資料之間的關係,像是要運用什麼樣的邏輯來處理獲得的資料,要怎麼去分類、排序等等,決定資料在電腦中的順序及在記憶體中的位置。
當我們使用適合的資料結構規劃出資料的表現方式時,也可以讓我們更快地找到想要的資料,運用在程式中可以讓程式更有效率地從記憶體中存取資料;也像現實生活中的字典,我們可以先依照想找的字的部首、筆畫數等等順利地找到我們想找的字詞,也像電話簿、病歷資料等等,都有他們各自的資料排序儲存模式,讓想找的資料更快便到我們面前─=≡Σ((( つ•̀ω•́)つ
演算法的定義是用來解決某個問題或是提供某種功能之有限個指令或敘述之集合,簡單來說就是使用資料的策略!
而演算法必須滿足以下五個標準(criteria):
Input(輸入)
input data必須**>=0**
Output(輸出)
輸出結果必須**>=1**
Definiteness(明確)
每個指令必須clear(清楚)、unambiguous(明確)
(因為演算法的呈現格式並沒有依定的規範,可能為flow diagram(流程圖)或是pseudo code(虛擬碼)等等,不同人執行時需有相同的做法指引)
Finiteness(有限)
演算法必須在執行/追蹤有限個步驟後能夠terminate(終止)
小筆記
但是Program(程式)不一定要滿足有限性
像是無窮迴圈,或是生活中的24小時保全系統等等
演算法在我們生活中其實也很常見,我們常常聽到其他人說演算法帶我看到什麼什麼影片,這就是網站透過你近期的觀看習慣去推薦更多相關的影片給你,或是在我們的IG、Facebook會顯示推薦追蹤、加入好友的人,這些也是演算法的一部分,透過你們之間的共同好友關係去推測你可能認識的人。
資料結構與演算法的關係可以說是相輔相成,當我們使用不同的資料結構去分類擺放我們的資料時,也會影響到演算法執行的速率,所以他們兩個可是可以達到1+1>2的好夥伴呢(ノ◕ヮ◕)ノ*:・゚✧