我是 PRUM 股份有限公司的 masa。
今天我整理了給初學者看的「資料要怎麼排列、怎麼取出」的規則(資料結構)。
程式會因為「如何處理一組資料」而有很大的不同行為。
這篇文章的目的,是透過認識資料處理的基本模式,打好基礎,讓你能判斷「應該如何整理資料、又該怎麼處理」。
在寫程式時,經常會遇到先把多筆資料暫時存起來,之後再依順序取出來處理的情境。
這時候,定義「資料要以什麼順序取出」這個規則的,就是 堆疊 和 佇列 這兩種資料結構。
「最後放進去的東西先拿出來嗎(堆疊)」,還是「最先放進去的東西先拿出來嗎(佇列)」——這個差異會決定可實現的處理形式。
理解這個差異後,處理流程會更容易整理,尤其在順序很重要的邏輯中,也更能避免不預期的行為(bug)。
光看名詞可能會覺得很難,但原理其實很簡單。
堆疊就像「桌上疊起來的文件」。
最後放上去的文件會在最上面,所以下一次要用時,會先被拿出來。
瀏覽器的「返回」按鈕也很接近這個概念,會回到最後看過的頁面。
※實際上是透過「返回用」與「前進用」兩個堆疊組合來實現。
佇列就像「超市結帳排隊」。
先排隊的人會先被叫到。
在電腦中,像印表機的列印等待佇列也會用到這個概念。
接著來看,如何在記憶體中排列多筆資料。
最常用的是 陣列(Array) 和 串列(連結串列)。
每種資料結構都有擅長與不擅長的地方。
重點是要根據「最常進行哪種操作」來選擇。
陣列就像「號碼固定的大樓信箱」。
101 室、102 室……依序排列,
所以只要說「105 室」,就能立刻找到。
串列就像「電話聯絡網」。
「A 先生→B 先生→C 先生」這樣依序串接。
如果拿不定主意,就從 最常做哪種操作 來思考。
想快速取出特定位置的資料
→ 陣列
常常在中間新增或刪除
→ 串列
不過在實務上,由於 CPU 快取效率等原因,很多情況會使用陣列(動態陣列)。
資料結構看起來或許不起眼,但它是支撐「程式如何處理資料」這個根本思維的重要基礎。
不需要一開始就全部理解。
先從「這筆資料用什麼規則處理會最自然?」這個角度開始,你看程式碼的方式就會慢慢改變。
一邊累積經驗,一邊學會選擇自己覺得「好處理」的資料形狀吧。
PRUM 的工程師有 95% 以上是從無經驗錄用的。
如果可以,也歡迎來我們的企業網站看看。
▶ 企業網站
我們也有經營整理給工程師參考的文章網站。如果有興趣,也歡迎看看。
▶ 對工程師有幫助的文章網站